diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 4 | ||||
-rw-r--r-- | net/core/neighbour.c | 6 | ||||
-rw-r--r-- | net/core/skbuff.c | 1 |
3 files changed, 4 insertions, 7 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index edcf019c056d..6ba50a1e404c 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -3283,18 +3283,18 @@ another_round: | |||
3283 | ncls: | 3283 | ncls: |
3284 | #endif | 3284 | #endif |
3285 | 3285 | ||
3286 | rx_handler = rcu_dereference(skb->dev->rx_handler); | ||
3286 | if (vlan_tx_tag_present(skb)) { | 3287 | if (vlan_tx_tag_present(skb)) { |
3287 | if (pt_prev) { | 3288 | if (pt_prev) { |
3288 | ret = deliver_skb(skb, pt_prev, orig_dev); | 3289 | ret = deliver_skb(skb, pt_prev, orig_dev); |
3289 | pt_prev = NULL; | 3290 | pt_prev = NULL; |
3290 | } | 3291 | } |
3291 | if (vlan_do_receive(&skb)) | 3292 | if (vlan_do_receive(&skb, !rx_handler)) |
3292 | goto another_round; | 3293 | goto another_round; |
3293 | else if (unlikely(!skb)) | 3294 | else if (unlikely(!skb)) |
3294 | goto out; | 3295 | goto out; |
3295 | } | 3296 | } |
3296 | 3297 | ||
3297 | rx_handler = rcu_dereference(skb->dev->rx_handler); | ||
3298 | if (rx_handler) { | 3298 | if (rx_handler) { |
3299 | if (pt_prev) { | 3299 | if (pt_prev) { |
3300 | ret = deliver_skb(skb, pt_prev, orig_dev); | 3300 | ret = deliver_skb(skb, pt_prev, orig_dev); |
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 909ecb3c2a33..039d51e6c284 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
@@ -872,12 +872,8 @@ static void neigh_timer_handler(unsigned long arg) | |||
872 | now = jiffies; | 872 | now = jiffies; |
873 | next = now + HZ; | 873 | next = now + HZ; |
874 | 874 | ||
875 | if (!(state & NUD_IN_TIMER)) { | 875 | if (!(state & NUD_IN_TIMER)) |
876 | #ifndef CONFIG_SMP | ||
877 | printk(KERN_WARNING "neigh: timer & !nud_in_timer\n"); | ||
878 | #endif | ||
879 | goto out; | 876 | goto out; |
880 | } | ||
881 | 877 | ||
882 | if (state & NUD_REACHABLE) { | 878 | if (state & NUD_REACHABLE) { |
883 | if (time_before_eq(now, | 879 | if (time_before_eq(now, |
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index ca4db40e75b8..18a3cebb753d 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -189,6 +189,7 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask, | |||
189 | * aligned memory blocks, unless SLUB/SLAB debug is enabled. | 189 | * aligned memory blocks, unless SLUB/SLAB debug is enabled. |
190 | * Both skb->head and skb_shared_info are cache line aligned. | 190 | * Both skb->head and skb_shared_info are cache line aligned. |
191 | */ | 191 | */ |
192 | size = SKB_DATA_ALIGN(size); | ||
192 | size += SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); | 193 | size += SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); |
193 | data = kmalloc_node_track_caller(size, gfp_mask, node); | 194 | data = kmalloc_node_track_caller(size, gfp_mask, node); |
194 | if (!data) | 195 | if (!data) |