From: Anoob Soman <anoob.so...@citrix.com> Date: Wed, 15 Feb 2017 20:25:39 +0000
> Commit 6664498280cf ("packet: call fanout_release, while UNREGISTERING a > netdev"), unfortunately, introduced the following issues. ... > To fix the above problems, remove the call to fanout_release() under > rcu_read_lock(). Instead, call __dev_remove_pack(&fanout->prot_hook) and > netdev_run_todo will be happy that &dev->ptype_specific list is empty. In > order > to achieve this, I moved dev_{add,remove}_pack() out of fanout_{add,release} > to > __fanout_{link,unlink}. So, call to {,__}unregister_prot_hook() will make sure > fanout->prot_hook is removed as well. > > Fixes: 6664498280cf ("packet: call fanout_release, while UNREGISTERING a > netdev") > Reported-by: Eric Dumazet <eduma...@google.com> > Signed-off-by: Anoob Soman <anoob.so...@citrix.com> > --- > Changes in v3: > - Removed extra variable from fanout_release(), per Eric's suggestion. > Changes in v2: > - Incorporated Eric's suggestion to do fanout_release_data() and kfree() > after > synchronize_net() Applied and queued up for -stable, thanks.