Loading include/net/sock.h +1 −1 Original line number Diff line number Diff line Loading @@ -1189,7 +1189,7 @@ extern void sk_filter_release_rcu(struct rcu_head *rcu); static inline void sk_filter_release(struct sk_filter *fp) { if (atomic_dec_and_test(&fp->refcnt)) call_rcu_bh(&fp->rcu, sk_filter_release_rcu); call_rcu(&fp->rcu, sk_filter_release_rcu); } static inline void sk_filter_uncharge(struct sock *sk, struct sk_filter *fp) Loading net/core/filter.c +3 −3 Original line number Diff line number Diff line Loading @@ -142,14 +142,14 @@ int sk_filter(struct sock *sk, struct sk_buff *skb) if (err) return err; rcu_read_lock_bh(); filter = rcu_dereference_bh(sk->sk_filter); rcu_read_lock(); filter = rcu_dereference(sk->sk_filter); if (filter) { unsigned int pkt_len = sk_run_filter(skb, filter->insns); err = pkt_len ? pskb_trim(skb, pkt_len) : -EPERM; } rcu_read_unlock_bh(); rcu_read_unlock(); return err; } Loading net/packet/af_packet.c +3 −3 Original line number Diff line number Diff line Loading @@ -523,11 +523,11 @@ static inline unsigned int run_filter(const struct sk_buff *skb, { struct sk_filter *filter; rcu_read_lock_bh(); filter = rcu_dereference_bh(sk->sk_filter); rcu_read_lock(); filter = rcu_dereference(sk->sk_filter); if (filter != NULL) res = sk_run_filter(skb, filter->insns); rcu_read_unlock_bh(); rcu_read_unlock(); return res; } Loading Loading
include/net/sock.h +1 −1 Original line number Diff line number Diff line Loading @@ -1189,7 +1189,7 @@ extern void sk_filter_release_rcu(struct rcu_head *rcu); static inline void sk_filter_release(struct sk_filter *fp) { if (atomic_dec_and_test(&fp->refcnt)) call_rcu_bh(&fp->rcu, sk_filter_release_rcu); call_rcu(&fp->rcu, sk_filter_release_rcu); } static inline void sk_filter_uncharge(struct sock *sk, struct sk_filter *fp) Loading
net/core/filter.c +3 −3 Original line number Diff line number Diff line Loading @@ -142,14 +142,14 @@ int sk_filter(struct sock *sk, struct sk_buff *skb) if (err) return err; rcu_read_lock_bh(); filter = rcu_dereference_bh(sk->sk_filter); rcu_read_lock(); filter = rcu_dereference(sk->sk_filter); if (filter) { unsigned int pkt_len = sk_run_filter(skb, filter->insns); err = pkt_len ? pskb_trim(skb, pkt_len) : -EPERM; } rcu_read_unlock_bh(); rcu_read_unlock(); return err; } Loading
net/packet/af_packet.c +3 −3 Original line number Diff line number Diff line Loading @@ -523,11 +523,11 @@ static inline unsigned int run_filter(const struct sk_buff *skb, { struct sk_filter *filter; rcu_read_lock_bh(); filter = rcu_dereference_bh(sk->sk_filter); rcu_read_lock(); filter = rcu_dereference(sk->sk_filter); if (filter != NULL) res = sk_run_filter(skb, filter->insns); rcu_read_unlock_bh(); rcu_read_unlock(); return res; } Loading