summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2011-05-12 17:46:56 -0400
committerDavid S. Miller <davem@davemloft.net>2011-05-12 17:46:56 -0400
commitf607a158004d75c9005423ce1ba70dc6ec3dd9c2 (patch)
tree87932db617f445111cb72f5fa0d8f4eaecc91b45 /include
parente154b639bbe53dc91d1873cd37d162bb2fe87aab (diff)
downloadlinux-stable-f607a158004d75c9005423ce1ba70dc6ec3dd9c2.tar.gz
linux-stable-f607a158004d75c9005423ce1ba70dc6ec3dd9c2.tar.bz2
linux-stable-f607a158004d75c9005423ce1ba70dc6ec3dd9c2.zip
garp: remove last synchronize_rcu() call
When removing last vlan from a device, garp_uninit_applicant() calls synchronize_rcu() to make sure no user can still manipulate struct garp_applicant before we free it. Use call_rcu() instead, as a step to further net_device dismantle optimizations. Add the temporary garp_cleanup_module() function to make sure no pending call_rcu() are left at module unload time [ this will be removed when kfree_rcu() is available ] Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/net/garp.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/garp.h b/include/net/garp.h
index 8cabbf087169..834d8add9e5f 100644
--- a/include/net/garp.h
+++ b/include/net/garp.h
@@ -104,6 +104,7 @@ struct garp_applicant {
struct sk_buff_head queue;
struct sk_buff *pdu;
struct rb_root gid;
+ struct rcu_head rcu;
};
struct garp_port {