[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20160902.173730.771175006796901877.davem@davemloft.net>
Date: Fri, 02 Sep 2016 17:37:30 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: eric.dumazet@...il.com
Cc: netdev@...r.kernel.org
Subject: Re: [BUG] af_packet FANOUT and device dismantle
From: Eric Dumazet <eric.dumazet@...il.com>
Date: Thu, 01 Sep 2016 17:04:43 -0700
> When you added fanout in commit dc99f600698dcac,
> it seems a device dismantle is not properly handled.
>
> packet_notifier() does properly finds all sockets attached to the
> device and we call __unregister_prot_hook()
>
> But the actual dev_remove_pack() is called when the last socket attached
> to the FANOUT group is _closed_ , possibly minutes after the device
> disappeared.
>
> So we trigger the BUG_ON(!list_empty(&dev->ptype_all)); in
> netdev_run_todo(), that came with linux-4.0 in
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7866a621043fbaca3d7389e9b9f69dd1a2e5a855
>
> Fix would be to call dev_remote_pack() from __fanout_unlink() when
> num_members becomes 0.
>
> Let me know if you agree with this, thanks.
I completely agree with your analysis, good catch.
Powered by blists - more mailing lists