aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/net/if_inet6.h
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2010-11-23 13:12:15 +0000
committerDavid S. Miller <davem@davemloft.net>2010-11-24 11:16:42 -0800
commit456b61bca8ee324ab6c18b065e632c9a8c88aa39 (patch)
treed1d458d78b6fffa32558ffbf7cdfc49a316a660c /include/net/if_inet6.h
parentstmmac: update the driver version (diff)
downloadwireguard-linux-456b61bca8ee324ab6c18b065e632c9a8c88aa39.tar.xz
wireguard-linux-456b61bca8ee324ab6c18b065e632c9a8c88aa39.zip
ipv6: mcast: RCU conversion
ipv6_sk_mc_lock rwlock becomes a spinlock. readers (inet6_mc_check()) now takes rcu_read_lock() instead of read lock. Writers dont need to disable BH anymore. struct ipv6_mc_socklist objects are reclaimed after one RCU grace period. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/if_inet6.h')
-rw-r--r--include/net/if_inet6.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/include/net/if_inet6.h b/include/net/if_inet6.h
index f95ff8d9aa47..04977eefb0ee 100644
--- a/include/net/if_inet6.h
+++ b/include/net/if_inet6.h
@@ -89,10 +89,11 @@ struct ip6_sf_socklist {
struct ipv6_mc_socklist {
struct in6_addr addr;
int ifindex;
- struct ipv6_mc_socklist *next;
+ struct ipv6_mc_socklist __rcu *next;
rwlock_t sflock;
unsigned int sfmode; /* MCAST_{INCLUDE,EXCLUDE} */
struct ip6_sf_socklist *sflist;
+ struct rcu_head rcu;
};
struct ip6_sf_list {