From 141fd3717486822be8b6ddec0f3d1f881a064ce1 Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Mon, 22 Aug 2011 19:32:42 +0000 Subject: [PATCH] --- yaml --- r: 263511 b: refs/heads/master c: 20e6074eb8e096b3a595c093d1cb222f378cd671 h: refs/heads/master i: 263509: 29670fa9e73143c30739763c35f49c37a4319339 263507: c0765671ab08f77679723808fa23210eac484cc4 263503: 2063d2ebb02c3978d9331fbca302a24aec7c1824 v: v3 --- [refs] | 2 +- trunk/net/core/neighbour.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 5a280f821382..30e3b467bb4d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 22df13319d1fec30b8f9bcaadc295829647109bb +refs/heads/master: 20e6074eb8e096b3a595c093d1cb222f378cd671 diff --git a/trunk/net/core/neighbour.c b/trunk/net/core/neighbour.c index 8fab9b0bb203..1334d7e56f02 100644 --- a/trunk/net/core/neighbour.c +++ b/trunk/net/core/neighbour.c @@ -1319,11 +1319,15 @@ static void neigh_proxy_process(unsigned long arg) if (tdif <= 0) { struct net_device *dev = skb->dev; + __skb_unlink(skb, &tbl->proxy_queue); - if (tbl->proxy_redo && netif_running(dev)) + if (tbl->proxy_redo && netif_running(dev)) { + rcu_read_lock(); tbl->proxy_redo(skb); - else + rcu_read_unlock(); + } else { kfree_skb(skb); + } dev_put(dev); } else if (!sched_next || tdif < sched_next)