On Wed, 2016-02-10 at 17:35 +0530, Maninder Singh wrote: > This Patch fixes below warning:- > WARNING: at net/packet/af_packet.c:xxx packet_sock_destruct > > There is following race between packet_rcv and packet_close > which keeps unfree packet in receive queue. > > CPU 1 CPU2 > packet_rcv > > packet_close > skb_set_owner_r(skb, sk); > > skb_queue_purge(&sk->sk_receive_queue); > > spin_lock(&sk->sk_receive_queue.lock); > __skb_queue_tail(&sk->sk_receive_queue, skb); > spin_unlock(&sk->sk_receive_queue.lock);
This absolutely can not happen. CPU 1 holds rcu read lock, so cpu 2 can not possibly call skb_queue_purge() (cpu 1 is blocked in synchronize_net(), waiting that all cpus are no longer in packet_rcv()) This patch does not address the root cause of your problem, and only slightly changes probability for the bug to trigger.