diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/bridge/br_fdb.c | 4 | ||||
-rw-r--r-- | net/caif/caif_dev.c | 16 | ||||
-rw-r--r-- | net/caif/caif_usb.c | 3 | ||||
-rw-r--r-- | net/core/dev.c | 32 | ||||
-rw-r--r-- | net/core/net-sysfs.c | 2 | ||||
-rw-r--r-- | net/core/secure_seq.c | 2 | ||||
-rw-r--r-- | net/ipv4/inetpeer.c | 3 | ||||
-rw-r--r-- | net/ipv4/ipconfig.c | 8 | ||||
-rw-r--r-- | net/ipv4/ping.c | 27 | ||||
-rw-r--r-- | net/ipv4/udp_diag.c | 1 | ||||
-rw-r--r-- | net/ipv6/datagram.c | 2 | ||||
-rw-r--r-- | net/ipv6/proc.c | 4 | ||||
-rw-r--r-- | net/ipv6/route.c | 1 | ||||
-rw-r--r-- | net/mac80211/cfg.c | 2 | ||||
-rw-r--r-- | net/mac80211/rx.c | 1 | ||||
-rw-r--r-- | net/mac80211/sta_info.c | 6 | ||||
-rw-r--r-- | net/mac80211/tx.c | 10 | ||||
-rw-r--r-- | net/mac80211/wpa.c | 19 | ||||
-rw-r--r-- | net/mac80211/wpa.h | 2 | ||||
-rw-r--r-- | net/netfilter/ipset/ip_set_core.c | 37 | ||||
-rw-r--r-- | net/netfilter/nf_conntrack_helper.c | 12 | ||||
-rw-r--r-- | net/netfilter/nf_conntrack_netlink.c | 4 | ||||
-rw-r--r-- | net/netfilter/xt_CT.c | 8 | ||||
-rw-r--r-- | net/netfilter/xt_hashlimit.c | 5 | ||||
-rw-r--r-- | net/openvswitch/datapath.c | 8 | ||||
-rw-r--r-- | net/openvswitch/datapath.h | 1 | ||||
-rw-r--r-- | net/openvswitch/flow.c | 1 | ||||
-rw-r--r-- | net/openvswitch/vport-internal_dev.c | 1 | ||||
-rw-r--r-- | net/openvswitch/vport.c | 1 |
29 files changed, 123 insertions, 100 deletions
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c index f963f6b1884f..5ba0c844d508 100644 --- a/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c | |||
@@ -146,7 +146,7 @@ void br_fdb_cleanup(unsigned long _data) | |||
146 | unsigned long next_timer = jiffies + br->ageing_time; | 146 | unsigned long next_timer = jiffies + br->ageing_time; |
147 | int i; | 147 | int i; |
148 | 148 | ||
149 | spin_lock_bh(&br->hash_lock); | 149 | spin_lock(&br->hash_lock); |
150 | for (i = 0; i < BR_HASH_SIZE; i++) { | 150 | for (i = 0; i < BR_HASH_SIZE; i++) { |
151 | struct net_bridge_fdb_entry *f; | 151 | struct net_bridge_fdb_entry *f; |
152 | struct hlist_node *h, *n; | 152 | struct hlist_node *h, *n; |
@@ -162,7 +162,7 @@ void br_fdb_cleanup(unsigned long _data) | |||
162 | next_timer = this_timer; | 162 | next_timer = this_timer; |
163 | } | 163 | } |
164 | } | 164 | } |
165 | spin_unlock_bh(&br->hash_lock); | 165 | spin_unlock(&br->hash_lock); |
166 | 166 | ||
167 | mod_timer(&br->gc_timer, round_jiffies_up(next_timer)); | 167 | mod_timer(&br->gc_timer, round_jiffies_up(next_timer)); |
168 | } | 168 | } |
diff --git a/net/caif/caif_dev.c b/net/caif/caif_dev.c index 61570ee76fe6..673728add60b 100644 --- a/net/caif/caif_dev.c +++ b/net/caif/caif_dev.c | |||
@@ -146,15 +146,17 @@ void caif_flow_cb(struct sk_buff *skb) | |||
146 | spin_lock_bh(&caifd->flow_lock); | 146 | spin_lock_bh(&caifd->flow_lock); |
147 | send_xoff = caifd->xoff; | 147 | send_xoff = caifd->xoff; |
148 | caifd->xoff = 0; | 148 | caifd->xoff = 0; |
149 | if (!WARN_ON(caifd->xoff_skb_dtor == NULL)) { | 149 | dtor = caifd->xoff_skb_dtor; |
150 | WARN_ON(caifd->xoff_skb != skb); | 150 | |
151 | dtor = caifd->xoff_skb_dtor; | 151 | if (WARN_ON(caifd->xoff_skb != skb)) |
152 | caifd->xoff_skb = NULL; | 152 | skb = NULL; |
153 | caifd->xoff_skb_dtor = NULL; | 153 | |
154 | } | 154 | caifd->xoff_skb = NULL; |
155 | caifd->xoff_skb_dtor = NULL; | ||
156 | |||
155 | spin_unlock_bh(&caifd->flow_lock); | 157 | spin_unlock_bh(&caifd->flow_lock); |
156 | 158 | ||
157 | if (dtor) | 159 | if (dtor && skb) |
158 | dtor(skb); | 160 | dtor(skb); |
159 | 161 | ||
160 | if (send_xoff) | 162 | if (send_xoff) |
diff --git a/net/caif/caif_usb.c b/net/caif/caif_usb.c index 5fc9eca8cd41..fd7cbf5aa895 100644 --- a/net/caif/caif_usb.c +++ b/net/caif/caif_usb.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/netdevice.h> | 12 | #include <linux/netdevice.h> |
13 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
14 | #include <linux/netdevice.h> | ||
15 | #include <linux/mii.h> | 14 | #include <linux/mii.h> |
16 | #include <linux/usb.h> | 15 | #include <linux/usb.h> |
17 | #include <linux/usb/usbnet.h> | 16 | #include <linux/usb/usbnet.h> |
@@ -27,7 +26,7 @@ MODULE_LICENSE("GPL"); | |||
27 | #define CFUSB_ALIGNMENT 4 /* Number of bytes to align. */ | 26 | #define CFUSB_ALIGNMENT 4 /* Number of bytes to align. */ |
28 | #define CFUSB_MAX_HEADLEN (CFUSB_PAD_DESCR_SZ + CFUSB_ALIGNMENT-1) | 27 | #define CFUSB_MAX_HEADLEN (CFUSB_PAD_DESCR_SZ + CFUSB_ALIGNMENT-1) |
29 | #define STE_USB_VID 0x04cc /* USB Product ID for ST-Ericsson */ | 28 | #define STE_USB_VID 0x04cc /* USB Product ID for ST-Ericsson */ |
30 | #define STE_USB_PID_CAIF 0x2306 /* Product id for CAIF Modems */ | 29 | #define STE_USB_PID_CAIF 0x230f /* Product id for CAIF Modems */ |
31 | 30 | ||
32 | struct cfusbl { | 31 | struct cfusbl { |
33 | struct cflayer layer; | 32 | struct cflayer layer; |
diff --git a/net/core/dev.c b/net/core/dev.c index f494675471a9..115dee1d985d 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -1887,6 +1887,23 @@ void skb_set_dev(struct sk_buff *skb, struct net_device *dev) | |||
1887 | EXPORT_SYMBOL(skb_set_dev); | 1887 | EXPORT_SYMBOL(skb_set_dev); |
1888 | #endif /* CONFIG_NET_NS */ | 1888 | #endif /* CONFIG_NET_NS */ |
1889 | 1889 | ||
1890 | static void skb_warn_bad_offload(const struct sk_buff *skb) | ||
1891 | { | ||
1892 | static const netdev_features_t null_features = 0; | ||
1893 | struct net_device *dev = skb->dev; | ||
1894 | const char *driver = ""; | ||
1895 | |||
1896 | if (dev && dev->dev.parent) | ||
1897 | driver = dev_driver_string(dev->dev.parent); | ||
1898 | |||
1899 | WARN(1, "%s: caps=(%pNF, %pNF) len=%d data_len=%d gso_size=%d " | ||
1900 | "gso_type=%d ip_summed=%d\n", | ||
1901 | driver, dev ? &dev->features : &null_features, | ||
1902 | skb->sk ? &skb->sk->sk_route_caps : &null_features, | ||
1903 | skb->len, skb->data_len, skb_shinfo(skb)->gso_size, | ||
1904 | skb_shinfo(skb)->gso_type, skb->ip_summed); | ||
1905 | } | ||
1906 | |||
1890 | /* | 1907 | /* |
1891 | * Invalidate hardware checksum when packet is to be mangled, and | 1908 | * Invalidate hardware checksum when packet is to be mangled, and |
1892 | * complete checksum manually on outgoing path. | 1909 | * complete checksum manually on outgoing path. |
@@ -1900,8 +1917,8 @@ int skb_checksum_help(struct sk_buff *skb) | |||
1900 | goto out_set_summed; | 1917 | goto out_set_summed; |
1901 | 1918 | ||
1902 | if (unlikely(skb_shinfo(skb)->gso_size)) { | 1919 | if (unlikely(skb_shinfo(skb)->gso_size)) { |
1903 | /* Let GSO fix up the checksum. */ | 1920 | skb_warn_bad_offload(skb); |
1904 | goto out_set_summed; | 1921 | return -EINVAL; |
1905 | } | 1922 | } |
1906 | 1923 | ||
1907 | offset = skb_checksum_start_offset(skb); | 1924 | offset = skb_checksum_start_offset(skb); |
@@ -1961,16 +1978,7 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb, | |||
1961 | __skb_pull(skb, skb->mac_len); | 1978 | __skb_pull(skb, skb->mac_len); |
1962 | 1979 | ||
1963 | if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) { | 1980 | if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) { |
1964 | struct net_device *dev = skb->dev; | 1981 | skb_warn_bad_offload(skb); |
1965 | struct ethtool_drvinfo info = {}; | ||
1966 | |||
1967 | if (dev && dev->ethtool_ops && dev->ethtool_ops->get_drvinfo) | ||
1968 | dev->ethtool_ops->get_drvinfo(dev, &info); | ||
1969 | |||
1970 | WARN(1, "%s: caps=(%pNF, %pNF) len=%d data_len=%d ip_summed=%d\n", | ||
1971 | info.driver, dev ? &dev->features : NULL, | ||
1972 | skb->sk ? &skb->sk->sk_route_caps : NULL, | ||
1973 | skb->len, skb->data_len, skb->ip_summed); | ||
1974 | 1982 | ||
1975 | if (skb_header_cloned(skb) && | 1983 | if (skb_header_cloned(skb) && |
1976 | (err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC))) | 1984 | (err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC))) |
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index f3dbd4f596a4..a1727cda03d7 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c | |||
@@ -929,7 +929,7 @@ static ssize_t bql_show_inflight(struct netdev_queue *queue, | |||
929 | } | 929 | } |
930 | 930 | ||
931 | static struct netdev_queue_attribute bql_inflight_attribute = | 931 | static struct netdev_queue_attribute bql_inflight_attribute = |
932 | __ATTR(inflight, S_IRUGO | S_IWUSR, bql_show_inflight, NULL); | 932 | __ATTR(inflight, S_IRUGO, bql_show_inflight, NULL); |
933 | 933 | ||
934 | #define BQL_ATTR(NAME, FIELD) \ | 934 | #define BQL_ATTR(NAME, FIELD) \ |
935 | static ssize_t bql_show_ ## NAME(struct netdev_queue *queue, \ | 935 | static ssize_t bql_show_ ## NAME(struct netdev_queue *queue, \ |
diff --git a/net/core/secure_seq.c b/net/core/secure_seq.c index 6fd44606fdd1..99b2596531bb 100644 --- a/net/core/secure_seq.c +++ b/net/core/secure_seq.c | |||
@@ -46,7 +46,7 @@ __u32 secure_tcpv6_sequence_number(const __be32 *saddr, const __be32 *daddr, | |||
46 | 46 | ||
47 | memcpy(hash, saddr, 16); | 47 | memcpy(hash, saddr, 16); |
48 | for (i = 0; i < 4; i++) | 48 | for (i = 0; i < 4; i++) |
49 | secret[i] = net_secret[i] + daddr[i]; | 49 | secret[i] = net_secret[i] + (__force u32)daddr[i]; |
50 | secret[4] = net_secret[4] + | 50 | secret[4] = net_secret[4] + |
51 | (((__force u16)sport << 16) + (__force u16)dport); | 51 | (((__force u16)sport << 16) + (__force u16)dport); |
52 | for (i = 5; i < MD5_MESSAGE_BYTES / 4; i++) | 52 | for (i = 5; i < MD5_MESSAGE_BYTES / 4; i++) |
diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c index 86f13c67ea85..bf4a9c4808e1 100644 --- a/net/ipv4/inetpeer.c +++ b/net/ipv4/inetpeer.c | |||
@@ -136,7 +136,7 @@ static int addr_compare(const struct inetpeer_addr *a, | |||
136 | for (i = 0; i < n; i++) { | 136 | for (i = 0; i < n; i++) { |
137 | if (a->addr.a6[i] == b->addr.a6[i]) | 137 | if (a->addr.a6[i] == b->addr.a6[i]) |
138 | continue; | 138 | continue; |
139 | if (a->addr.a6[i] < b->addr.a6[i]) | 139 | if ((__force u32)a->addr.a6[i] < (__force u32)b->addr.a6[i]) |
140 | return -1; | 140 | return -1; |
141 | return 1; | 141 | return 1; |
142 | } | 142 | } |
@@ -447,6 +447,7 @@ relookup: | |||
447 | p->rate_last = 0; | 447 | p->rate_last = 0; |
448 | p->pmtu_expires = 0; | 448 | p->pmtu_expires = 0; |
449 | p->pmtu_orig = 0; | 449 | p->pmtu_orig = 0; |
450 | p->redirect_genid = 0; | ||
450 | memset(&p->redirect_learned, 0, sizeof(p->redirect_learned)); | 451 | memset(&p->redirect_learned, 0, sizeof(p->redirect_learned)); |
451 | 452 | ||
452 | 453 | ||
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c index 7e4ec9fc2cef..6e412a60a91f 100644 --- a/net/ipv4/ipconfig.c +++ b/net/ipv4/ipconfig.c | |||
@@ -141,7 +141,7 @@ __be32 ic_servaddr = NONE; /* Boot server IP address */ | |||
141 | __be32 root_server_addr = NONE; /* Address of NFS server */ | 141 | __be32 root_server_addr = NONE; /* Address of NFS server */ |
142 | u8 root_server_path[256] = { 0, }; /* Path to mount as root */ | 142 | u8 root_server_path[256] = { 0, }; /* Path to mount as root */ |
143 | 143 | ||
144 | u32 ic_dev_xid; /* Device under configuration */ | 144 | __be32 ic_dev_xid; /* Device under configuration */ |
145 | 145 | ||
146 | /* vendor class identifier */ | 146 | /* vendor class identifier */ |
147 | static char vendor_class_identifier[253] __initdata; | 147 | static char vendor_class_identifier[253] __initdata; |
@@ -859,9 +859,9 @@ static int __init ic_bootp_string(char *dest, char *src, int len, int max) | |||
859 | */ | 859 | */ |
860 | static void __init ic_do_bootp_ext(u8 *ext) | 860 | static void __init ic_do_bootp_ext(u8 *ext) |
861 | { | 861 | { |
862 | u8 servers; | 862 | u8 servers; |
863 | int i; | 863 | int i; |
864 | u16 mtu; | 864 | __be16 mtu; |
865 | 865 | ||
866 | #ifdef IPCONFIG_DEBUG | 866 | #ifdef IPCONFIG_DEBUG |
867 | u8 *c; | 867 | u8 *c; |
diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c index 43d4c3b22369..aea5a199c37a 100644 --- a/net/ipv4/ping.c +++ b/net/ipv4/ping.c | |||
@@ -140,13 +140,14 @@ static void ping_v4_unhash(struct sock *sk) | |||
140 | write_lock_bh(&ping_table.lock); | 140 | write_lock_bh(&ping_table.lock); |
141 | hlist_nulls_del(&sk->sk_nulls_node); | 141 | hlist_nulls_del(&sk->sk_nulls_node); |
142 | sock_put(sk); | 142 | sock_put(sk); |
143 | isk->inet_num = isk->inet_sport = 0; | 143 | isk->inet_num = 0; |
144 | isk->inet_sport = 0; | ||
144 | sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); | 145 | sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); |
145 | write_unlock_bh(&ping_table.lock); | 146 | write_unlock_bh(&ping_table.lock); |
146 | } | 147 | } |
147 | } | 148 | } |
148 | 149 | ||
149 | static struct sock *ping_v4_lookup(struct net *net, u32 saddr, u32 daddr, | 150 | static struct sock *ping_v4_lookup(struct net *net, __be32 saddr, __be32 daddr, |
150 | u16 ident, int dif) | 151 | u16 ident, int dif) |
151 | { | 152 | { |
152 | struct hlist_nulls_head *hslot = ping_hashslot(&ping_table, net, ident); | 153 | struct hlist_nulls_head *hslot = ping_hashslot(&ping_table, net, ident); |
@@ -154,15 +155,15 @@ static struct sock *ping_v4_lookup(struct net *net, u32 saddr, u32 daddr, | |||
154 | struct inet_sock *isk; | 155 | struct inet_sock *isk; |
155 | struct hlist_nulls_node *hnode; | 156 | struct hlist_nulls_node *hnode; |
156 | 157 | ||
157 | pr_debug("try to find: num = %d, daddr = %ld, dif = %d\n", | 158 | pr_debug("try to find: num = %d, daddr = %pI4, dif = %d\n", |
158 | (int)ident, (unsigned long)daddr, dif); | 159 | (int)ident, &daddr, dif); |
159 | read_lock_bh(&ping_table.lock); | 160 | read_lock_bh(&ping_table.lock); |
160 | 161 | ||
161 | ping_portaddr_for_each_entry(sk, hnode, hslot) { | 162 | ping_portaddr_for_each_entry(sk, hnode, hslot) { |
162 | isk = inet_sk(sk); | 163 | isk = inet_sk(sk); |
163 | 164 | ||
164 | pr_debug("found: %p: num = %d, daddr = %ld, dif = %d\n", sk, | 165 | pr_debug("found: %p: num = %d, daddr = %pI4, dif = %d\n", sk, |
165 | (int)isk->inet_num, (unsigned long)isk->inet_rcv_saddr, | 166 | (int)isk->inet_num, &isk->inet_rcv_saddr, |
166 | sk->sk_bound_dev_if); | 167 | sk->sk_bound_dev_if); |
167 | 168 | ||
168 | pr_debug("iterate\n"); | 169 | pr_debug("iterate\n"); |
@@ -254,7 +255,7 @@ static int ping_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len) | |||
254 | sk, addr->sin_addr.s_addr, ntohs(addr->sin_port)); | 255 | sk, addr->sin_addr.s_addr, ntohs(addr->sin_port)); |
255 | 256 | ||
256 | chk_addr_ret = inet_addr_type(sock_net(sk), addr->sin_addr.s_addr); | 257 | chk_addr_ret = inet_addr_type(sock_net(sk), addr->sin_addr.s_addr); |
257 | if (addr->sin_addr.s_addr == INADDR_ANY) | 258 | if (addr->sin_addr.s_addr == htonl(INADDR_ANY)) |
258 | chk_addr_ret = RTN_LOCAL; | 259 | chk_addr_ret = RTN_LOCAL; |
259 | 260 | ||
260 | if ((sysctl_ip_nonlocal_bind == 0 && | 261 | if ((sysctl_ip_nonlocal_bind == 0 && |
@@ -278,9 +279,9 @@ static int ping_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len) | |||
278 | goto out; | 279 | goto out; |
279 | } | 280 | } |
280 | 281 | ||
281 | pr_debug("after bind(): num = %d, daddr = %ld, dif = %d\n", | 282 | pr_debug("after bind(): num = %d, daddr = %pI4, dif = %d\n", |
282 | (int)isk->inet_num, | 283 | (int)isk->inet_num, |
283 | (unsigned long) isk->inet_rcv_saddr, | 284 | &isk->inet_rcv_saddr, |
284 | (int)sk->sk_bound_dev_if); | 285 | (int)sk->sk_bound_dev_if); |
285 | 286 | ||
286 | err = 0; | 287 | err = 0; |
@@ -407,7 +408,7 @@ out: | |||
407 | struct pingfakehdr { | 408 | struct pingfakehdr { |
408 | struct icmphdr icmph; | 409 | struct icmphdr icmph; |
409 | struct iovec *iov; | 410 | struct iovec *iov; |
410 | u32 wcheck; | 411 | __wsum wcheck; |
411 | }; | 412 | }; |
412 | 413 | ||
413 | static int ping_getfrag(void *from, char * to, | 414 | static int ping_getfrag(void *from, char * to, |
@@ -459,7 +460,7 @@ static int ping_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | |||
459 | struct rtable *rt = NULL; | 460 | struct rtable *rt = NULL; |
460 | struct ip_options_data opt_copy; | 461 | struct ip_options_data opt_copy; |
461 | int free = 0; | 462 | int free = 0; |
462 | u32 saddr, daddr, faddr; | 463 | __be32 saddr, daddr, faddr; |
463 | u8 tos; | 464 | u8 tos; |
464 | int err; | 465 | int err; |
465 | 466 | ||
@@ -696,8 +697,8 @@ void ping_rcv(struct sk_buff *skb) | |||
696 | struct net *net = dev_net(skb->dev); | 697 | struct net *net = dev_net(skb->dev); |
697 | struct iphdr *iph = ip_hdr(skb); | 698 | struct iphdr *iph = ip_hdr(skb); |
698 | struct icmphdr *icmph = icmp_hdr(skb); | 699 | struct icmphdr *icmph = icmp_hdr(skb); |
699 | u32 saddr = iph->saddr; | 700 | __be32 saddr = iph->saddr; |
700 | u32 daddr = iph->daddr; | 701 | __be32 daddr = iph->daddr; |
701 | 702 | ||
702 | /* We assume the packet has already been checked by icmp_rcv */ | 703 | /* We assume the packet has already been checked by icmp_rcv */ |
703 | 704 | ||
diff --git a/net/ipv4/udp_diag.c b/net/ipv4/udp_diag.c index e5e18cb8a586..8a949f19deb6 100644 --- a/net/ipv4/udp_diag.c +++ b/net/ipv4/udp_diag.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/udp.h> | 15 | #include <linux/udp.h> |
16 | #include <net/udp.h> | 16 | #include <net/udp.h> |
17 | #include <net/udplite.h> | 17 | #include <net/udplite.h> |
18 | #include <linux/inet_diag.h> | ||
19 | #include <linux/sock_diag.h> | 18 | #include <linux/sock_diag.h> |
20 | 19 | ||
21 | static int sk_diag_dump(struct sock *sk, struct sk_buff *skb, | 20 | static int sk_diag_dump(struct sock *sk, struct sk_buff *skb, |
diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c index ae08aee1773c..251e7cd75e89 100644 --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c | |||
@@ -575,7 +575,7 @@ int datagram_recv_ctl(struct sock *sk, struct msghdr *msg, struct sk_buff *skb) | |||
575 | } | 575 | } |
576 | if (np->rxopt.bits.rxorigdstaddr) { | 576 | if (np->rxopt.bits.rxorigdstaddr) { |
577 | struct sockaddr_in6 sin6; | 577 | struct sockaddr_in6 sin6; |
578 | u16 *ports = (u16 *) skb_transport_header(skb); | 578 | __be16 *ports = (__be16 *) skb_transport_header(skb); |
579 | 579 | ||
580 | if (skb_transport_offset(skb) + 4 <= skb->len) { | 580 | if (skb_transport_offset(skb) + 4 <= skb->len) { |
581 | /* All current transport protocols have the port numbers in the | 581 | /* All current transport protocols have the port numbers in the |
diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c index fdeb6d03da81..da2e92d05c15 100644 --- a/net/ipv6/proc.c +++ b/net/ipv6/proc.c | |||
@@ -237,8 +237,8 @@ static int snmp6_dev_seq_show(struct seq_file *seq, void *v) | |||
237 | struct inet6_dev *idev = (struct inet6_dev *)seq->private; | 237 | struct inet6_dev *idev = (struct inet6_dev *)seq->private; |
238 | 238 | ||
239 | seq_printf(seq, "%-32s\t%u\n", "ifIndex", idev->dev->ifindex); | 239 | seq_printf(seq, "%-32s\t%u\n", "ifIndex", idev->dev->ifindex); |
240 | snmp6_seq_show_item(seq, (void __percpu **)idev->stats.ipv6, NULL, | 240 | snmp6_seq_show_item64(seq, (void __percpu **)idev->stats.ipv6, |
241 | snmp6_ipstats_list); | 241 | snmp6_ipstats_list, offsetof(struct ipstats_mib, syncp)); |
242 | snmp6_seq_show_item(seq, NULL, idev->stats.icmpv6dev->mibs, | 242 | snmp6_seq_show_item(seq, NULL, idev->stats.icmpv6dev->mibs, |
243 | snmp6_icmp6_list); | 243 | snmp6_icmp6_list); |
244 | snmp6_seq_show_icmpv6msg(seq, idev->stats.icmpv6msgdev->mibs); | 244 | snmp6_seq_show_icmpv6msg(seq, idev->stats.icmpv6msgdev->mibs); |
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 07361dfa8085..8c2e3ab58f2a 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -1091,6 +1091,7 @@ struct dst_entry *icmp6_dst_alloc(struct net_device *dev, | |||
1091 | else { | 1091 | else { |
1092 | neigh = ip6_neigh_lookup(&rt->dst, &fl6->daddr); | 1092 | neigh = ip6_neigh_lookup(&rt->dst, &fl6->daddr); |
1093 | if (IS_ERR(neigh)) { | 1093 | if (IS_ERR(neigh)) { |
1094 | in6_dev_put(idev); | ||
1094 | dst_free(&rt->dst); | 1095 | dst_free(&rt->dst); |
1095 | return ERR_CAST(neigh); | 1096 | return ERR_CAST(neigh); |
1096 | } | 1097 | } |
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index e60df48fa4d4..296620d6ca0c 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c | |||
@@ -791,7 +791,7 @@ static int sta_apply_parameters(struct ieee80211_local *local, | |||
791 | if (set & BIT(NL80211_STA_FLAG_AUTHORIZED)) | 791 | if (set & BIT(NL80211_STA_FLAG_AUTHORIZED)) |
792 | ret = sta_info_move_state_checked(sta, | 792 | ret = sta_info_move_state_checked(sta, |
793 | IEEE80211_STA_AUTHORIZED); | 793 | IEEE80211_STA_AUTHORIZED); |
794 | else | 794 | else if (test_sta_flag(sta, WLAN_STA_AUTHORIZED)) |
795 | ret = sta_info_move_state_checked(sta, | 795 | ret = sta_info_move_state_checked(sta, |
796 | IEEE80211_STA_ASSOC); | 796 | IEEE80211_STA_ASSOC); |
797 | if (ret) | 797 | if (ret) |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index f407427c642f..751409120769 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -1979,6 +1979,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx) | |||
1979 | mesh_path_error_tx(ifmsh->mshcfg.element_ttl, fwd_hdr->addr3, | 1979 | mesh_path_error_tx(ifmsh->mshcfg.element_ttl, fwd_hdr->addr3, |
1980 | 0, reason, fwd_hdr->addr2, sdata); | 1980 | 0, reason, fwd_hdr->addr2, sdata); |
1981 | IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_no_route); | 1981 | IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_no_route); |
1982 | kfree_skb(fwd_skb); | ||
1982 | return RX_DROP_MONITOR; | 1983 | return RX_DROP_MONITOR; |
1983 | } | 1984 | } |
1984 | 1985 | ||
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index 3c428d4839c7..ff11f6bf8266 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c | |||
@@ -238,9 +238,11 @@ static void sta_unblock(struct work_struct *wk) | |||
238 | if (sta->dead) | 238 | if (sta->dead) |
239 | return; | 239 | return; |
240 | 240 | ||
241 | if (!test_sta_flag(sta, WLAN_STA_PS_STA)) | 241 | if (!test_sta_flag(sta, WLAN_STA_PS_STA)) { |
242 | local_bh_disable(); | ||
242 | ieee80211_sta_ps_deliver_wakeup(sta); | 243 | ieee80211_sta_ps_deliver_wakeup(sta); |
243 | else if (test_and_clear_sta_flag(sta, WLAN_STA_PSPOLL)) { | 244 | local_bh_enable(); |
245 | } else if (test_and_clear_sta_flag(sta, WLAN_STA_PSPOLL)) { | ||
244 | clear_sta_flag(sta, WLAN_STA_PS_DRIVER); | 246 | clear_sta_flag(sta, WLAN_STA_PS_DRIVER); |
245 | 247 | ||
246 | local_bh_disable(); | 248 | local_bh_disable(); |
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index edcd1c7ab83f..e05667cd5e76 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1001,8 +1001,6 @@ ieee80211_tx_h_stats(struct ieee80211_tx_data *tx) | |||
1001 | static ieee80211_tx_result debug_noinline | 1001 | static ieee80211_tx_result debug_noinline |
1002 | ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) | 1002 | ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) |
1003 | { | 1003 | { |
1004 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); | ||
1005 | |||
1006 | if (!tx->key) | 1004 | if (!tx->key) |
1007 | return TX_CONTINUE; | 1005 | return TX_CONTINUE; |
1008 | 1006 | ||
@@ -1017,13 +1015,7 @@ ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) | |||
1017 | case WLAN_CIPHER_SUITE_AES_CMAC: | 1015 | case WLAN_CIPHER_SUITE_AES_CMAC: |
1018 | return ieee80211_crypto_aes_cmac_encrypt(tx); | 1016 | return ieee80211_crypto_aes_cmac_encrypt(tx); |
1019 | default: | 1017 | default: |
1020 | /* handle hw-only algorithm */ | 1018 | return ieee80211_crypto_hw_encrypt(tx); |
1021 | if (info->control.hw_key) { | ||
1022 | ieee80211_tx_set_protected(tx); | ||
1023 | return TX_CONTINUE; | ||
1024 | } | ||
1025 | break; | ||
1026 | |||
1027 | } | 1019 | } |
1028 | 1020 | ||
1029 | return TX_DROP; | 1021 | return TX_DROP; |
diff --git a/net/mac80211/wpa.c b/net/mac80211/wpa.c index 422b79851ec5..b758350919ff 100644 --- a/net/mac80211/wpa.c +++ b/net/mac80211/wpa.c | |||
@@ -643,3 +643,22 @@ ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx) | |||
643 | 643 | ||
644 | return RX_CONTINUE; | 644 | return RX_CONTINUE; |
645 | } | 645 | } |
646 | |||
647 | ieee80211_tx_result | ||
648 | ieee80211_crypto_hw_encrypt(struct ieee80211_tx_data *tx) | ||
649 | { | ||
650 | struct sk_buff *skb; | ||
651 | struct ieee80211_tx_info *info = NULL; | ||
652 | |||
653 | skb_queue_walk(&tx->skbs, skb) { | ||
654 | info = IEEE80211_SKB_CB(skb); | ||
655 | |||
656 | /* handle hw-only algorithm */ | ||
657 | if (!info->control.hw_key) | ||
658 | return TX_DROP; | ||
659 | } | ||
660 | |||
661 | ieee80211_tx_set_protected(tx); | ||
662 | |||
663 | return TX_CONTINUE; | ||
664 | } | ||
diff --git a/net/mac80211/wpa.h b/net/mac80211/wpa.h index baba0608313e..07e33f899c71 100644 --- a/net/mac80211/wpa.h +++ b/net/mac80211/wpa.h | |||
@@ -32,5 +32,7 @@ ieee80211_tx_result | |||
32 | ieee80211_crypto_aes_cmac_encrypt(struct ieee80211_tx_data *tx); | 32 | ieee80211_crypto_aes_cmac_encrypt(struct ieee80211_tx_data *tx); |
33 | ieee80211_rx_result | 33 | ieee80211_rx_result |
34 | ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx); | 34 | ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx); |
35 | ieee80211_tx_result | ||
36 | ieee80211_crypto_hw_encrypt(struct ieee80211_tx_data *tx); | ||
35 | 37 | ||
36 | #endif /* WPA_H */ | 38 | #endif /* WPA_H */ |
diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c index 86137b558f45..32dbf0fa89db 100644 --- a/net/netfilter/ipset/ip_set_core.c +++ b/net/netfilter/ipset/ip_set_core.c | |||
@@ -77,35 +77,42 @@ find_set_type(const char *name, u8 family, u8 revision) | |||
77 | } | 77 | } |
78 | 78 | ||
79 | /* Unlock, try to load a set type module and lock again */ | 79 | /* Unlock, try to load a set type module and lock again */ |
80 | static int | 80 | static bool |
81 | try_to_load_type(const char *name) | 81 | load_settype(const char *name) |
82 | { | 82 | { |
83 | nfnl_unlock(); | 83 | nfnl_unlock(); |
84 | pr_debug("try to load ip_set_%s\n", name); | 84 | pr_debug("try to load ip_set_%s\n", name); |
85 | if (request_module("ip_set_%s", name) < 0) { | 85 | if (request_module("ip_set_%s", name) < 0) { |
86 | pr_warning("Can't find ip_set type %s\n", name); | 86 | pr_warning("Can't find ip_set type %s\n", name); |
87 | nfnl_lock(); | 87 | nfnl_lock(); |
88 | return -IPSET_ERR_FIND_TYPE; | 88 | return false; |
89 | } | 89 | } |
90 | nfnl_lock(); | 90 | nfnl_lock(); |
91 | return -EAGAIN; | 91 | return true; |
92 | } | 92 | } |
93 | 93 | ||
94 | /* Find a set type and reference it */ | 94 | /* Find a set type and reference it */ |
95 | #define find_set_type_get(name, family, revision, found) \ | ||
96 | __find_set_type_get(name, family, revision, found, false) | ||
97 | |||
95 | static int | 98 | static int |
96 | find_set_type_get(const char *name, u8 family, u8 revision, | 99 | __find_set_type_get(const char *name, u8 family, u8 revision, |
97 | struct ip_set_type **found) | 100 | struct ip_set_type **found, bool retry) |
98 | { | 101 | { |
99 | struct ip_set_type *type; | 102 | struct ip_set_type *type; |
100 | int err; | 103 | int err; |
101 | 104 | ||
105 | if (retry && !load_settype(name)) | ||
106 | return -IPSET_ERR_FIND_TYPE; | ||
107 | |||
102 | rcu_read_lock(); | 108 | rcu_read_lock(); |
103 | *found = find_set_type(name, family, revision); | 109 | *found = find_set_type(name, family, revision); |
104 | if (*found) { | 110 | if (*found) { |
105 | err = !try_module_get((*found)->me) ? -EFAULT : 0; | 111 | err = !try_module_get((*found)->me) ? -EFAULT : 0; |
106 | goto unlock; | 112 | goto unlock; |
107 | } | 113 | } |
108 | /* Make sure the type is loaded but we don't support the revision */ | 114 | /* Make sure the type is already loaded |
115 | * but we don't support the revision */ | ||
109 | list_for_each_entry_rcu(type, &ip_set_type_list, list) | 116 | list_for_each_entry_rcu(type, &ip_set_type_list, list) |
110 | if (STREQ(type->name, name)) { | 117 | if (STREQ(type->name, name)) { |
111 | err = -IPSET_ERR_FIND_TYPE; | 118 | err = -IPSET_ERR_FIND_TYPE; |
@@ -113,7 +120,8 @@ find_set_type_get(const char *name, u8 family, u8 revision, | |||
113 | } | 120 | } |
114 | rcu_read_unlock(); | 121 | rcu_read_unlock(); |
115 | 122 | ||
116 | return try_to_load_type(name); | 123 | return retry ? -IPSET_ERR_FIND_TYPE : |
124 | __find_set_type_get(name, family, revision, found, true); | ||
117 | 125 | ||
118 | unlock: | 126 | unlock: |
119 | rcu_read_unlock(); | 127 | rcu_read_unlock(); |
@@ -124,12 +132,19 @@ unlock: | |||
124 | * If we succeeded, the supported minimal and maximum revisions are | 132 | * If we succeeded, the supported minimal and maximum revisions are |
125 | * filled out. | 133 | * filled out. |
126 | */ | 134 | */ |
135 | #define find_set_type_minmax(name, family, min, max) \ | ||
136 | __find_set_type_minmax(name, family, min, max, false) | ||
137 | |||
127 | static int | 138 | static int |
128 | find_set_type_minmax(const char *name, u8 family, u8 *min, u8 *max) | 139 | __find_set_type_minmax(const char *name, u8 family, u8 *min, u8 *max, |
140 | bool retry) | ||
129 | { | 141 | { |
130 | struct ip_set_type *type; | 142 | struct ip_set_type *type; |
131 | bool found = false; | 143 | bool found = false; |
132 | 144 | ||
145 | if (retry && !load_settype(name)) | ||
146 | return -IPSET_ERR_FIND_TYPE; | ||
147 | |||
133 | *min = 255; *max = 0; | 148 | *min = 255; *max = 0; |
134 | rcu_read_lock(); | 149 | rcu_read_lock(); |
135 | list_for_each_entry_rcu(type, &ip_set_type_list, list) | 150 | list_for_each_entry_rcu(type, &ip_set_type_list, list) |
@@ -145,7 +160,8 @@ find_set_type_minmax(const char *name, u8 family, u8 *min, u8 *max) | |||
145 | if (found) | 160 | if (found) |
146 | return 0; | 161 | return 0; |
147 | 162 | ||
148 | return try_to_load_type(name); | 163 | return retry ? -IPSET_ERR_FIND_TYPE : |
164 | __find_set_type_minmax(name, family, min, max, true); | ||
149 | } | 165 | } |
150 | 166 | ||
151 | #define family_name(f) ((f) == AF_INET ? "inet" : \ | 167 | #define family_name(f) ((f) == AF_INET ? "inet" : \ |
@@ -1126,6 +1142,7 @@ release_refcount: | |||
1126 | if (ret || !cb->args[2]) { | 1142 | if (ret || !cb->args[2]) { |
1127 | pr_debug("release set %s\n", ip_set_list[index]->name); | 1143 | pr_debug("release set %s\n", ip_set_list[index]->name); |
1128 | ip_set_put_byindex(index); | 1144 | ip_set_put_byindex(index); |
1145 | cb->args[2] = 0; | ||
1129 | } | 1146 | } |
1130 | out: | 1147 | out: |
1131 | if (nlh) { | 1148 | if (nlh) { |
diff --git a/net/netfilter/nf_conntrack_helper.c b/net/netfilter/nf_conntrack_helper.c index 299fec91f741..bbe23baa19b6 100644 --- a/net/netfilter/nf_conntrack_helper.c +++ b/net/netfilter/nf_conntrack_helper.c | |||
@@ -121,18 +121,6 @@ int __nf_ct_try_assign_helper(struct nf_conn *ct, struct nf_conn *tmpl, | |||
121 | int ret = 0; | 121 | int ret = 0; |
122 | 122 | ||
123 | if (tmpl != NULL) { | 123 | if (tmpl != NULL) { |
124 | /* we've got a userspace helper. */ | ||
125 | if (tmpl->status & IPS_USERSPACE_HELPER) { | ||
126 | help = nf_ct_helper_ext_add(ct, flags); | ||
127 | if (help == NULL) { | ||
128 | ret = -ENOMEM; | ||
129 | goto out; | ||
130 | } | ||
131 | rcu_assign_pointer(help->helper, NULL); | ||
132 | __set_bit(IPS_USERSPACE_HELPER_BIT, &ct->status); | ||
133 | ret = 0; | ||
134 | goto out; | ||
135 | } | ||
136 | help = nfct_help(tmpl); | 124 | help = nfct_help(tmpl); |
137 | if (help != NULL) | 125 | if (help != NULL) |
138 | helper = help->helper; | 126 | helper = help->helper; |
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c index 2a4834b83332..9307b033c0c9 100644 --- a/net/netfilter/nf_conntrack_netlink.c +++ b/net/netfilter/nf_conntrack_netlink.c | |||
@@ -2042,10 +2042,6 @@ ctnetlink_create_expect(struct net *net, u16 zone, | |||
2042 | } | 2042 | } |
2043 | help = nfct_help(ct); | 2043 | help = nfct_help(ct); |
2044 | if (!help) { | 2044 | if (!help) { |
2045 | err = -EOPNOTSUPP; | ||
2046 | goto out; | ||
2047 | } | ||
2048 | if (test_bit(IPS_USERSPACE_HELPER_BIT, &ct->status)) { | ||
2049 | if (!cda[CTA_EXPECT_TIMEOUT]) { | 2045 | if (!cda[CTA_EXPECT_TIMEOUT]) { |
2050 | err = -EINVAL; | 2046 | err = -EINVAL; |
2051 | goto out; | 2047 | goto out; |
diff --git a/net/netfilter/xt_CT.c b/net/netfilter/xt_CT.c index 8e87123f1373..0221d10de75a 100644 --- a/net/netfilter/xt_CT.c +++ b/net/netfilter/xt_CT.c | |||
@@ -62,8 +62,8 @@ static int xt_ct_tg_check(const struct xt_tgchk_param *par) | |||
62 | int ret = 0; | 62 | int ret = 0; |
63 | u8 proto; | 63 | u8 proto; |
64 | 64 | ||
65 | if (info->flags & ~(XT_CT_NOTRACK | XT_CT_USERSPACE_HELPER)) | 65 | if (info->flags & ~XT_CT_NOTRACK) |
66 | return -EOPNOTSUPP; | 66 | return -EINVAL; |
67 | 67 | ||
68 | if (info->flags & XT_CT_NOTRACK) { | 68 | if (info->flags & XT_CT_NOTRACK) { |
69 | ct = nf_ct_untracked_get(); | 69 | ct = nf_ct_untracked_get(); |
@@ -92,9 +92,7 @@ static int xt_ct_tg_check(const struct xt_tgchk_param *par) | |||
92 | GFP_KERNEL)) | 92 | GFP_KERNEL)) |
93 | goto err3; | 93 | goto err3; |
94 | 94 | ||
95 | if (info->flags & XT_CT_USERSPACE_HELPER) { | 95 | if (info->helper[0]) { |
96 | __set_bit(IPS_USERSPACE_HELPER_BIT, &ct->status); | ||
97 | } else if (info->helper[0]) { | ||
98 | ret = -ENOENT; | 96 | ret = -ENOENT; |
99 | proto = xt_ct_find_proto(par); | 97 | proto = xt_ct_find_proto(par); |
100 | if (!proto) { | 98 | if (!proto) { |
diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c index 8e4992101875..d95f9c963cde 100644 --- a/net/netfilter/xt_hashlimit.c +++ b/net/netfilter/xt_hashlimit.c | |||
@@ -445,7 +445,6 @@ hashlimit_init_dst(const struct xt_hashlimit_htable *hinfo, | |||
445 | { | 445 | { |
446 | __be16 _ports[2], *ports; | 446 | __be16 _ports[2], *ports; |
447 | u8 nexthdr; | 447 | u8 nexthdr; |
448 | __be16 frag_off; | ||
449 | int poff; | 448 | int poff; |
450 | 449 | ||
451 | memset(dst, 0, sizeof(*dst)); | 450 | memset(dst, 0, sizeof(*dst)); |
@@ -466,6 +465,9 @@ hashlimit_init_dst(const struct xt_hashlimit_htable *hinfo, | |||
466 | break; | 465 | break; |
467 | #if IS_ENABLED(CONFIG_IP6_NF_IPTABLES) | 466 | #if IS_ENABLED(CONFIG_IP6_NF_IPTABLES) |
468 | case NFPROTO_IPV6: | 467 | case NFPROTO_IPV6: |
468 | { | ||
469 | __be16 frag_off; | ||
470 | |||
469 | if (hinfo->cfg.mode & XT_HASHLIMIT_HASH_DIP) { | 471 | if (hinfo->cfg.mode & XT_HASHLIMIT_HASH_DIP) { |
470 | memcpy(&dst->ip6.dst, &ipv6_hdr(skb)->daddr, | 472 | memcpy(&dst->ip6.dst, &ipv6_hdr(skb)->daddr, |
471 | sizeof(dst->ip6.dst)); | 473 | sizeof(dst->ip6.dst)); |
@@ -485,6 +487,7 @@ hashlimit_init_dst(const struct xt_hashlimit_htable *hinfo, | |||
485 | if ((int)protoff < 0) | 487 | if ((int)protoff < 0) |
486 | return -1; | 488 | return -1; |
487 | break; | 489 | break; |
490 | } | ||
488 | #endif | 491 | #endif |
489 | default: | 492 | default: |
490 | BUG(); | 493 | BUG(); |
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c index 9a2725114e99..ce64c18b8c79 100644 --- a/net/openvswitch/datapath.c +++ b/net/openvswitch/datapath.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2007-2011 Nicira Networks. | 2 | * Copyright (c) 2007-2012 Nicira Networks. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of version 2 of the GNU General Public | 5 | * modify it under the terms of version 2 of the GNU General Public |
@@ -36,7 +36,6 @@ | |||
36 | #include <linux/rcupdate.h> | 36 | #include <linux/rcupdate.h> |
37 | #include <linux/tcp.h> | 37 | #include <linux/tcp.h> |
38 | #include <linux/udp.h> | 38 | #include <linux/udp.h> |
39 | #include <linux/version.h> | ||
40 | #include <linux/ethtool.h> | 39 | #include <linux/ethtool.h> |
41 | #include <linux/wait.h> | 40 | #include <linux/wait.h> |
42 | #include <asm/system.h> | 41 | #include <asm/system.h> |
@@ -1397,9 +1396,8 @@ static int ovs_dp_cmd_dump(struct sk_buff *skb, struct netlink_callback *cb) | |||
1397 | int i = 0; | 1396 | int i = 0; |
1398 | 1397 | ||
1399 | list_for_each_entry(dp, &dps, list_node) { | 1398 | list_for_each_entry(dp, &dps, list_node) { |
1400 | if (i < skip) | 1399 | if (i >= skip && |
1401 | continue; | 1400 | ovs_dp_cmd_fill_info(dp, skb, NETLINK_CB(cb->skb).pid, |
1402 | if (ovs_dp_cmd_fill_info(dp, skb, NETLINK_CB(cb->skb).pid, | ||
1403 | cb->nlh->nlmsg_seq, NLM_F_MULTI, | 1401 | cb->nlh->nlmsg_seq, NLM_F_MULTI, |
1404 | OVS_DP_CMD_NEW) < 0) | 1402 | OVS_DP_CMD_NEW) < 0) |
1405 | break; | 1403 | break; |
diff --git a/net/openvswitch/datapath.h b/net/openvswitch/datapath.h index 5b9f884b7055..c73370cc1f02 100644 --- a/net/openvswitch/datapath.h +++ b/net/openvswitch/datapath.h | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/netdevice.h> | 25 | #include <linux/netdevice.h> |
26 | #include <linux/skbuff.h> | 26 | #include <linux/skbuff.h> |
27 | #include <linux/u64_stats_sync.h> | 27 | #include <linux/u64_stats_sync.h> |
28 | #include <linux/version.h> | ||
29 | 28 | ||
30 | #include "flow.h" | 29 | #include "flow.h" |
31 | 30 | ||
diff --git a/net/openvswitch/flow.c b/net/openvswitch/flow.c index fe7f020a843e..1252c3081ef1 100644 --- a/net/openvswitch/flow.c +++ b/net/openvswitch/flow.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <linux/in.h> | 32 | #include <linux/in.h> |
33 | #include <linux/rcupdate.h> | 33 | #include <linux/rcupdate.h> |
34 | #include <linux/if_arp.h> | 34 | #include <linux/if_arp.h> |
35 | #include <linux/if_ether.h> | ||
36 | #include <linux/ip.h> | 35 | #include <linux/ip.h> |
37 | #include <linux/ipv6.h> | 36 | #include <linux/ipv6.h> |
38 | #include <linux/tcp.h> | 37 | #include <linux/tcp.h> |
diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c index 8fc28b86f2b3..322b8d206693 100644 --- a/net/openvswitch/vport-internal_dev.c +++ b/net/openvswitch/vport-internal_dev.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/etherdevice.h> | 23 | #include <linux/etherdevice.h> |
24 | #include <linux/ethtool.h> | 24 | #include <linux/ethtool.h> |
25 | #include <linux/skbuff.h> | 25 | #include <linux/skbuff.h> |
26 | #include <linux/version.h> | ||
27 | 26 | ||
28 | #include "datapath.h" | 27 | #include "datapath.h" |
29 | #include "vport-internal_dev.h" | 28 | #include "vport-internal_dev.h" |
diff --git a/net/openvswitch/vport.c b/net/openvswitch/vport.c index 7f0ef3794c51..6c066ba25dc7 100644 --- a/net/openvswitch/vport.c +++ b/net/openvswitch/vport.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/rcupdate.h> | 27 | #include <linux/rcupdate.h> |
28 | #include <linux/rtnetlink.h> | 28 | #include <linux/rtnetlink.h> |
29 | #include <linux/compat.h> | 29 | #include <linux/compat.h> |
30 | #include <linux/version.h> | ||
31 | 30 | ||
32 | #include "vport.h" | 31 | #include "vport.h" |
33 | #include "vport-internal_dev.h" | 32 | #include "vport-internal_dev.h" |