mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:02:20 +00:00
net: remove NULL-pointer net parameter in ip_metrics_convert
When I was doing some experiments, I found that when using the first parameter, namely, struct net, in ip_metrics_convert() always triggers NULL pointer crash. Then I digged into this part, realizing that we can remove this one due to its uselessness. Signed-off-by: Jason Xing <kernelxing@tencent.com> Reviewed-by: Simon Horman <horms@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cdbdb3c62a
commit
61e2bbafb0
@ -506,8 +506,7 @@ static inline unsigned int ip_skb_dst_mtu(struct sock *sk,
|
||||
return mtu - lwtunnel_headroom(skb_dst(skb)->lwtstate, mtu);
|
||||
}
|
||||
|
||||
struct dst_metrics *ip_fib_metrics_init(struct net *net, struct nlattr *fc_mx,
|
||||
int fc_mx_len,
|
||||
struct dst_metrics *ip_fib_metrics_init(struct nlattr *fc_mx, int fc_mx_len,
|
||||
struct netlink_ext_ack *extack);
|
||||
static inline void ip_fib_metrics_put(struct dst_metrics *fib_metrics)
|
||||
{
|
||||
|
@ -1224,7 +1224,7 @@ extern struct tcp_congestion_ops tcp_reno;
|
||||
|
||||
struct tcp_congestion_ops *tcp_ca_find(const char *name);
|
||||
struct tcp_congestion_ops *tcp_ca_find_key(u32 key);
|
||||
u32 tcp_ca_get_key_by_name(struct net *net, const char *name, bool *ecn_ca);
|
||||
u32 tcp_ca_get_key_by_name(const char *name, bool *ecn_ca);
|
||||
#ifdef CONFIG_INET
|
||||
char *tcp_ca_get_name_by_key(u32 key, char *buffer);
|
||||
#else
|
||||
|
@ -1030,7 +1030,7 @@ bool fib_metrics_match(struct fib_config *cfg, struct fib_info *fi)
|
||||
bool ecn_ca = false;
|
||||
|
||||
nla_strscpy(tmp, nla, sizeof(tmp));
|
||||
val = tcp_ca_get_key_by_name(fi->fib_net, tmp, &ecn_ca);
|
||||
val = tcp_ca_get_key_by_name(tmp, &ecn_ca);
|
||||
} else {
|
||||
if (nla_len(nla) != sizeof(u32))
|
||||
return false;
|
||||
@ -1459,8 +1459,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg,
|
||||
fi = kzalloc(struct_size(fi, fib_nh, nhs), GFP_KERNEL);
|
||||
if (!fi)
|
||||
goto failure;
|
||||
fi->fib_metrics = ip_fib_metrics_init(fi->fib_net, cfg->fc_mx,
|
||||
cfg->fc_mx_len, extack);
|
||||
fi->fib_metrics = ip_fib_metrics_init(cfg->fc_mx, cfg->fc_mx_len, extack);
|
||||
if (IS_ERR(fi->fib_metrics)) {
|
||||
err = PTR_ERR(fi->fib_metrics);
|
||||
kfree(fi);
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include <net/net_namespace.h>
|
||||
#include <net/tcp.h>
|
||||
|
||||
static int ip_metrics_convert(struct net *net, struct nlattr *fc_mx,
|
||||
static int ip_metrics_convert(struct nlattr *fc_mx,
|
||||
int fc_mx_len, u32 *metrics,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
@ -31,7 +31,7 @@ static int ip_metrics_convert(struct net *net, struct nlattr *fc_mx,
|
||||
char tmp[TCP_CA_NAME_MAX];
|
||||
|
||||
nla_strscpy(tmp, nla, sizeof(tmp));
|
||||
val = tcp_ca_get_key_by_name(net, tmp, &ecn_ca);
|
||||
val = tcp_ca_get_key_by_name(tmp, &ecn_ca);
|
||||
if (val == TCP_CA_UNSPEC) {
|
||||
NL_SET_ERR_MSG(extack, "Unknown tcp congestion algorithm");
|
||||
return -EINVAL;
|
||||
@ -63,7 +63,7 @@ static int ip_metrics_convert(struct net *net, struct nlattr *fc_mx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct dst_metrics *ip_fib_metrics_init(struct net *net, struct nlattr *fc_mx,
|
||||
struct dst_metrics *ip_fib_metrics_init(struct nlattr *fc_mx,
|
||||
int fc_mx_len,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
@ -77,7 +77,7 @@ struct dst_metrics *ip_fib_metrics_init(struct net *net, struct nlattr *fc_mx,
|
||||
if (unlikely(!fib_metrics))
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
err = ip_metrics_convert(net, fc_mx, fc_mx_len, fib_metrics->metrics,
|
||||
err = ip_metrics_convert(fc_mx, fc_mx_len, fib_metrics->metrics,
|
||||
extack);
|
||||
if (!err) {
|
||||
refcount_set(&fib_metrics->refcnt, 1);
|
||||
|
@ -46,8 +46,7 @@ void tcp_set_ca_state(struct sock *sk, const u8 ca_state)
|
||||
}
|
||||
|
||||
/* Must be called with rcu lock held */
|
||||
static struct tcp_congestion_ops *tcp_ca_find_autoload(struct net *net,
|
||||
const char *name)
|
||||
static struct tcp_congestion_ops *tcp_ca_find_autoload(const char *name)
|
||||
{
|
||||
struct tcp_congestion_ops *ca = tcp_ca_find(name);
|
||||
|
||||
@ -178,7 +177,7 @@ int tcp_update_congestion_control(struct tcp_congestion_ops *ca, struct tcp_cong
|
||||
return ret;
|
||||
}
|
||||
|
||||
u32 tcp_ca_get_key_by_name(struct net *net, const char *name, bool *ecn_ca)
|
||||
u32 tcp_ca_get_key_by_name(const char *name, bool *ecn_ca)
|
||||
{
|
||||
const struct tcp_congestion_ops *ca;
|
||||
u32 key = TCP_CA_UNSPEC;
|
||||
@ -186,7 +185,7 @@ u32 tcp_ca_get_key_by_name(struct net *net, const char *name, bool *ecn_ca)
|
||||
might_sleep();
|
||||
|
||||
rcu_read_lock();
|
||||
ca = tcp_ca_find_autoload(net, name);
|
||||
ca = tcp_ca_find_autoload(name);
|
||||
if (ca) {
|
||||
key = ca->key;
|
||||
*ecn_ca = ca->flags & TCP_CONG_NEEDS_ECN;
|
||||
@ -283,7 +282,7 @@ int tcp_set_default_congestion_control(struct net *net, const char *name)
|
||||
int ret;
|
||||
|
||||
rcu_read_lock();
|
||||
ca = tcp_ca_find_autoload(net, name);
|
||||
ca = tcp_ca_find_autoload(name);
|
||||
if (!ca) {
|
||||
ret = -ENOENT;
|
||||
} else if (!bpf_try_module_get(ca, ca->owner)) {
|
||||
@ -421,7 +420,7 @@ int tcp_set_congestion_control(struct sock *sk, const char *name, bool load,
|
||||
if (!load)
|
||||
ca = tcp_ca_find(name);
|
||||
else
|
||||
ca = tcp_ca_find_autoload(sock_net(sk), name);
|
||||
ca = tcp_ca_find_autoload(name);
|
||||
|
||||
/* No change asking for existing value */
|
||||
if (ca == icsk->icsk_ca_ops) {
|
||||
|
@ -3761,7 +3761,7 @@ static struct fib6_info *ip6_route_info_create(struct fib6_config *cfg,
|
||||
if (!rt)
|
||||
goto out;
|
||||
|
||||
rt->fib6_metrics = ip_fib_metrics_init(net, cfg->fc_mx, cfg->fc_mx_len,
|
||||
rt->fib6_metrics = ip_fib_metrics_init(cfg->fc_mx, cfg->fc_mx_len,
|
||||
extack);
|
||||
if (IS_ERR(rt->fib6_metrics)) {
|
||||
err = PTR_ERR(rt->fib6_metrics);
|
||||
|
Loading…
Reference in New Issue
Block a user