[SOCK]: Adds a rcu_dereference() in sk_filter
authorEric Dumazet <dada1@cosmosbay.com>
Wed, 9 Jan 2008 07:41:28 +0000 (23:41 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 9 Jan 2008 07:41:28 +0000 (23:41 -0800)
It seems commit fda9ef5d679b07c9d9097aaf6ef7f069d794a8f9 introduced a RCU
protection for sk_filter(), without a rcu_dereference()

Either we need a rcu_dereference(), either a comment should explain why we
dont need it. I vote for the former.

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/sock.h

index 67e35c7..6e1542d 100644 (file)
@@ -944,7 +944,7 @@ static inline int sk_filter(struct sock *sk, struct sk_buff *skb)
                return err;
        
        rcu_read_lock_bh();
-       filter = sk->sk_filter;
+       filter = rcu_dereference(sk->sk_filter);
        if (filter) {
                unsigned int pkt_len = sk_run_filter(skb, filter->insns,
                                filter->len);