netlink: use call_rcu for netlink_change_ngroups
authorJohannes Berg <johannes@sipsolutions.net>
Fri, 10 Jul 2009 09:51:32 +0000 (09:51 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 12 Jul 2009 21:03:24 +0000 (14:03 -0700)
commit6c04bb18ddd633b7feac2c8fe2ae0bf61d20ca7a
treed80582a2c3c248acef1193291a1888ffd588e9fd
parent487420df79f1d9f5b9de74c9bef378609c475a39
netlink: use call_rcu for netlink_change_ngroups

For the network namespace work in generic netlink I need
to be able to call this function under rcu_read_lock(),
otherwise the locking becomes a nightmare and more locks
would be needed. Instead, just embed a struct rcu_head
(actually a struct listeners_rcu_head that also carries
the pointer to the memory block) into the listeners
memory so we can use call_rcu() instead of synchronising
and then freeing. No rcu_barrier() is needed since this
code cannot be modular.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netlink/af_netlink.c