diff options
Diffstat (limited to 'net/core')
| -rw-r--r-- | net/core/dev.c | 6 | ||||
| -rw-r--r-- | net/core/fib_rules.c | 7 | ||||
| -rw-r--r-- | net/core/netpoll.c | 4 | ||||
| -rw-r--r-- | net/core/rtnetlink.c | 2 | ||||
| -rw-r--r-- | net/core/sock.c | 6 |
5 files changed, 18 insertions, 7 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 3721db716350..4ad1b78c9c77 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -2803,7 +2803,7 @@ EXPORT_SYMBOL(dev_loopback_xmit); | |||
| 2803 | * the BH enable code must have IRQs enabled so that it will not deadlock. | 2803 | * the BH enable code must have IRQs enabled so that it will not deadlock. |
| 2804 | * --BLG | 2804 | * --BLG |
| 2805 | */ | 2805 | */ |
| 2806 | int __dev_queue_xmit(struct sk_buff *skb, void *accel_priv) | 2806 | static int __dev_queue_xmit(struct sk_buff *skb, void *accel_priv) |
| 2807 | { | 2807 | { |
| 2808 | struct net_device *dev = skb->dev; | 2808 | struct net_device *dev = skb->dev; |
| 2809 | struct netdev_queue *txq; | 2809 | struct netdev_queue *txq; |
| @@ -4637,7 +4637,7 @@ struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev) | |||
| 4637 | } | 4637 | } |
| 4638 | EXPORT_SYMBOL(netdev_master_upper_dev_get_rcu); | 4638 | EXPORT_SYMBOL(netdev_master_upper_dev_get_rcu); |
| 4639 | 4639 | ||
| 4640 | int netdev_adjacent_sysfs_add(struct net_device *dev, | 4640 | static int netdev_adjacent_sysfs_add(struct net_device *dev, |
| 4641 | struct net_device *adj_dev, | 4641 | struct net_device *adj_dev, |
| 4642 | struct list_head *dev_list) | 4642 | struct list_head *dev_list) |
| 4643 | { | 4643 | { |
| @@ -4647,7 +4647,7 @@ int netdev_adjacent_sysfs_add(struct net_device *dev, | |||
| 4647 | return sysfs_create_link(&(dev->dev.kobj), &(adj_dev->dev.kobj), | 4647 | return sysfs_create_link(&(dev->dev.kobj), &(adj_dev->dev.kobj), |
| 4648 | linkname); | 4648 | linkname); |
| 4649 | } | 4649 | } |
| 4650 | void netdev_adjacent_sysfs_del(struct net_device *dev, | 4650 | static void netdev_adjacent_sysfs_del(struct net_device *dev, |
| 4651 | char *name, | 4651 | char *name, |
| 4652 | struct list_head *dev_list) | 4652 | struct list_head *dev_list) |
| 4653 | { | 4653 | { |
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c index f409e0bd35c0..185c341fafbd 100644 --- a/net/core/fib_rules.c +++ b/net/core/fib_rules.c | |||
| @@ -745,6 +745,13 @@ static int fib_rules_event(struct notifier_block *this, unsigned long event, | |||
| 745 | attach_rules(&ops->rules_list, dev); | 745 | attach_rules(&ops->rules_list, dev); |
| 746 | break; | 746 | break; |
| 747 | 747 | ||
| 748 | case NETDEV_CHANGENAME: | ||
| 749 | list_for_each_entry(ops, &net->rules_ops, list) { | ||
| 750 | detach_rules(&ops->rules_list, dev); | ||
| 751 | attach_rules(&ops->rules_list, dev); | ||
| 752 | } | ||
| 753 | break; | ||
| 754 | |||
| 748 | case NETDEV_UNREGISTER: | 755 | case NETDEV_UNREGISTER: |
| 749 | list_for_each_entry(ops, &net->rules_ops, list) | 756 | list_for_each_entry(ops, &net->rules_ops, list) |
| 750 | detach_rules(&ops->rules_list, dev); | 757 | detach_rules(&ops->rules_list, dev); |
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index c03f3dec4763..a664f7829a6d 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c | |||
| @@ -948,6 +948,7 @@ int netpoll_parse_options(struct netpoll *np, char *opt) | |||
| 948 | { | 948 | { |
| 949 | char *cur=opt, *delim; | 949 | char *cur=opt, *delim; |
| 950 | int ipv6; | 950 | int ipv6; |
| 951 | bool ipversion_set = false; | ||
| 951 | 952 | ||
| 952 | if (*cur != '@') { | 953 | if (*cur != '@') { |
| 953 | if ((delim = strchr(cur, '@')) == NULL) | 954 | if ((delim = strchr(cur, '@')) == NULL) |
| @@ -960,6 +961,7 @@ int netpoll_parse_options(struct netpoll *np, char *opt) | |||
| 960 | cur++; | 961 | cur++; |
| 961 | 962 | ||
| 962 | if (*cur != '/') { | 963 | if (*cur != '/') { |
| 964 | ipversion_set = true; | ||
| 963 | if ((delim = strchr(cur, '/')) == NULL) | 965 | if ((delim = strchr(cur, '/')) == NULL) |
| 964 | goto parse_failed; | 966 | goto parse_failed; |
| 965 | *delim = 0; | 967 | *delim = 0; |
| @@ -1002,7 +1004,7 @@ int netpoll_parse_options(struct netpoll *np, char *opt) | |||
| 1002 | ipv6 = netpoll_parse_ip_addr(cur, &np->remote_ip); | 1004 | ipv6 = netpoll_parse_ip_addr(cur, &np->remote_ip); |
| 1003 | if (ipv6 < 0) | 1005 | if (ipv6 < 0) |
| 1004 | goto parse_failed; | 1006 | goto parse_failed; |
| 1005 | else if (np->ipv6 != (bool)ipv6) | 1007 | else if (ipversion_set && np->ipv6 != (bool)ipv6) |
| 1006 | goto parse_failed; | 1008 | goto parse_failed; |
| 1007 | else | 1009 | else |
| 1008 | np->ipv6 = (bool)ipv6; | 1010 | np->ipv6 = (bool)ipv6; |
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 393b1bc9a618..048dc8d183aa 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
| @@ -374,7 +374,7 @@ static size_t rtnl_link_get_slave_info_data_size(const struct net_device *dev) | |||
| 374 | if (!master_dev) | 374 | if (!master_dev) |
| 375 | return 0; | 375 | return 0; |
| 376 | ops = master_dev->rtnl_link_ops; | 376 | ops = master_dev->rtnl_link_ops; |
| 377 | if (!ops->get_slave_size) | 377 | if (!ops || !ops->get_slave_size) |
| 378 | return 0; | 378 | return 0; |
| 379 | /* IFLA_INFO_SLAVE_DATA + nested data */ | 379 | /* IFLA_INFO_SLAVE_DATA + nested data */ |
| 380 | return nla_total_size(sizeof(struct nlattr)) + | 380 | return nla_total_size(sizeof(struct nlattr)) + |
diff --git a/net/core/sock.c b/net/core/sock.c index 0c127dcdf6a8..5b6a9431b017 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
| @@ -1775,7 +1775,9 @@ struct sk_buff *sock_alloc_send_pskb(struct sock *sk, unsigned long header_len, | |||
| 1775 | while (order) { | 1775 | while (order) { |
| 1776 | if (npages >= 1 << order) { | 1776 | if (npages >= 1 << order) { |
| 1777 | page = alloc_pages(sk->sk_allocation | | 1777 | page = alloc_pages(sk->sk_allocation | |
| 1778 | __GFP_COMP | __GFP_NOWARN, | 1778 | __GFP_COMP | |
| 1779 | __GFP_NOWARN | | ||
| 1780 | __GFP_NORETRY, | ||
| 1779 | order); | 1781 | order); |
| 1780 | if (page) | 1782 | if (page) |
| 1781 | goto fill_page; | 1783 | goto fill_page; |
| @@ -1845,7 +1847,7 @@ bool skb_page_frag_refill(unsigned int sz, struct page_frag *pfrag, gfp_t prio) | |||
| 1845 | gfp_t gfp = prio; | 1847 | gfp_t gfp = prio; |
| 1846 | 1848 | ||
| 1847 | if (order) | 1849 | if (order) |
| 1848 | gfp |= __GFP_COMP | __GFP_NOWARN; | 1850 | gfp |= __GFP_COMP | __GFP_NOWARN | __GFP_NORETRY; |
| 1849 | pfrag->page = alloc_pages(gfp, order); | 1851 | pfrag->page = alloc_pages(gfp, order); |
| 1850 | if (likely(pfrag->page)) { | 1852 | if (likely(pfrag->page)) { |
| 1851 | pfrag->offset = 0; | 1853 | pfrag->offset = 0; |
