diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev_ioctl.c | 3 | ||||
-rw-r--r-- | net/core/fib_rules.c | 3 | ||||
-rw-r--r-- | net/core/filter.c | 2 | ||||
-rw-r--r-- | net/core/netpoll.c | 2 | ||||
-rw-r--r-- | net/core/rtnetlink.c | 4 |
5 files changed, 9 insertions, 5 deletions
diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c index 82fd4c9c4a1b..06b147d7d9e2 100644 --- a/net/core/dev_ioctl.c +++ b/net/core/dev_ioctl.c | |||
@@ -28,6 +28,7 @@ static int dev_ifname(struct net *net, struct ifreq __user *arg) | |||
28 | 28 | ||
29 | if (copy_from_user(&ifr, arg, sizeof(struct ifreq))) | 29 | if (copy_from_user(&ifr, arg, sizeof(struct ifreq))) |
30 | return -EFAULT; | 30 | return -EFAULT; |
31 | ifr.ifr_name[IFNAMSIZ-1] = 0; | ||
31 | 32 | ||
32 | error = netdev_get_name(net, ifr.ifr_name, ifr.ifr_ifindex); | 33 | error = netdev_get_name(net, ifr.ifr_name, ifr.ifr_ifindex); |
33 | if (error) | 34 | if (error) |
@@ -424,6 +425,8 @@ int dev_ioctl(struct net *net, unsigned int cmd, void __user *arg) | |||
424 | if (copy_from_user(&iwr, arg, sizeof(iwr))) | 425 | if (copy_from_user(&iwr, arg, sizeof(iwr))) |
425 | return -EFAULT; | 426 | return -EFAULT; |
426 | 427 | ||
428 | iwr.ifr_name[sizeof(iwr.ifr_name) - 1] = 0; | ||
429 | |||
427 | return wext_handle_ioctl(net, &iwr, cmd, arg); | 430 | return wext_handle_ioctl(net, &iwr, cmd, arg); |
428 | } | 431 | } |
429 | 432 | ||
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c index a0093e1b0235..fdcb1bcd2afa 100644 --- a/net/core/fib_rules.c +++ b/net/core/fib_rules.c | |||
@@ -400,6 +400,7 @@ int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr *nlh, | |||
400 | err = -ENOMEM; | 400 | err = -ENOMEM; |
401 | goto errout; | 401 | goto errout; |
402 | } | 402 | } |
403 | refcount_set(&rule->refcnt, 1); | ||
403 | rule->fr_net = net; | 404 | rule->fr_net = net; |
404 | 405 | ||
405 | rule->pref = tb[FRA_PRIORITY] ? nla_get_u32(tb[FRA_PRIORITY]) | 406 | rule->pref = tb[FRA_PRIORITY] ? nla_get_u32(tb[FRA_PRIORITY]) |
@@ -517,8 +518,6 @@ int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr *nlh, | |||
517 | last = r; | 518 | last = r; |
518 | } | 519 | } |
519 | 520 | ||
520 | refcount_set(&rule->refcnt, 1); | ||
521 | |||
522 | if (last) | 521 | if (last) |
523 | list_add_rcu(&rule->list, &last->list); | 522 | list_add_rcu(&rule->list, &last->list); |
524 | else | 523 | else |
diff --git a/net/core/filter.c b/net/core/filter.c index c7f737058d89..f44fc22fd45a 100644 --- a/net/core/filter.c +++ b/net/core/filter.c | |||
@@ -2248,7 +2248,7 @@ static int bpf_skb_adjust_net(struct sk_buff *skb, s32 len_diff) | |||
2248 | bpf_skb_net_grow(skb, len_diff_abs); | 2248 | bpf_skb_net_grow(skb, len_diff_abs); |
2249 | 2249 | ||
2250 | bpf_compute_data_end(skb); | 2250 | bpf_compute_data_end(skb); |
2251 | return 0; | 2251 | return ret; |
2252 | } | 2252 | } |
2253 | 2253 | ||
2254 | BPF_CALL_4(bpf_skb_adjust_room, struct sk_buff *, skb, s32, len_diff, | 2254 | BPF_CALL_4(bpf_skb_adjust_room, struct sk_buff *, skb, s32, len_diff, |
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index d3408a693166..8357f164c660 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c | |||
@@ -277,7 +277,7 @@ static void zap_completion_queue(void) | |||
277 | struct sk_buff *skb = clist; | 277 | struct sk_buff *skb = clist; |
278 | clist = clist->next; | 278 | clist = clist->next; |
279 | if (!skb_irq_freeable(skb)) { | 279 | if (!skb_irq_freeable(skb)) { |
280 | refcount_inc(&skb->users); | 280 | refcount_set(&skb->users, 1); |
281 | dev_kfree_skb_any(skb); /* put this one back */ | 281 | dev_kfree_skb_any(skb); /* put this one back */ |
282 | } else { | 282 | } else { |
283 | __kfree_skb(skb); | 283 | __kfree_skb(skb); |
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index d1ba90980be1..9201e3621351 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -2031,7 +2031,8 @@ static int do_setlink(const struct sk_buff *skb, | |||
2031 | struct sockaddr *sa; | 2031 | struct sockaddr *sa; |
2032 | int len; | 2032 | int len; |
2033 | 2033 | ||
2034 | len = sizeof(sa_family_t) + dev->addr_len; | 2034 | len = sizeof(sa_family_t) + max_t(size_t, dev->addr_len, |
2035 | sizeof(*sa)); | ||
2035 | sa = kmalloc(len, GFP_KERNEL); | 2036 | sa = kmalloc(len, GFP_KERNEL); |
2036 | if (!sa) { | 2037 | if (!sa) { |
2037 | err = -ENOMEM; | 2038 | err = -ENOMEM; |
@@ -4241,6 +4242,7 @@ static int rtnetlink_event(struct notifier_block *this, unsigned long event, voi | |||
4241 | 4242 | ||
4242 | switch (event) { | 4243 | switch (event) { |
4243 | case NETDEV_REBOOT: | 4244 | case NETDEV_REBOOT: |
4245 | case NETDEV_CHANGEADDR: | ||
4244 | case NETDEV_CHANGENAME: | 4246 | case NETDEV_CHANGENAME: |
4245 | case NETDEV_FEAT_CHANGE: | 4247 | case NETDEV_FEAT_CHANGE: |
4246 | case NETDEV_BONDING_FAILOVER: | 4248 | case NETDEV_BONDING_FAILOVER: |