]> Pileus Git - ~andy/linux/blobdiff - net/ipv6/ip6_flowlabel.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[~andy/linux] / net / ipv6 / ip6_flowlabel.c
index b973ed3d06cf6b3302190b59e69d46c30b1d2ae3..46e88433ec7d229550eecadc29f8eacc139fe5b2 100644 (file)
@@ -144,7 +144,9 @@ static void ip6_fl_gc(unsigned long dummy)
        spin_lock(&ip6_fl_lock);
 
        for (i=0; i<=FL_HASH_MASK; i++) {
-               struct ip6_flowlabel *fl, **flp;
+               struct ip6_flowlabel *fl;
+               struct ip6_flowlabel __rcu **flp;
+
                flp = &fl_ht[i];
                while ((fl = rcu_dereference_protected(*flp,
                                                       lockdep_is_held(&ip6_fl_lock))) != NULL) {
@@ -179,7 +181,9 @@ static void __net_exit ip6_fl_purge(struct net *net)
 
        spin_lock(&ip6_fl_lock);
        for (i = 0; i <= FL_HASH_MASK; i++) {
-               struct ip6_flowlabel *fl, **flp;
+               struct ip6_flowlabel *fl;
+               struct ip6_flowlabel __rcu **flp;
+
                flp = &fl_ht[i];
                while ((fl = rcu_dereference_protected(*flp,
                                                       lockdep_is_held(&ip6_fl_lock))) != NULL) {
@@ -506,7 +510,8 @@ int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
        struct ipv6_pinfo *np = inet6_sk(sk);
        struct in6_flowlabel_req freq;
        struct ipv6_fl_socklist *sfl1=NULL;
-       struct ipv6_fl_socklist *sfl, **sflp;
+       struct ipv6_fl_socklist *sfl;
+       struct ipv6_fl_socklist __rcu **sflp;
        struct ip6_flowlabel *fl, *fl1 = NULL;