Merge branch 'net-sched-race-fix'
authorDavid S. Miller <davem@davemloft.net>
Thu, 9 Nov 2017 01:03:10 +0000 (10:03 +0900)
committerDavid S. Miller <davem@davemloft.net>
Thu, 9 Nov 2017 01:03:10 +0000 (10:03 +0900)
commit623859ae06b85cabba79ce78f0d49e67783d4c34
tree4600cfecab2372a77cfb9143e4b24b059d24433a
parent8f5624629105589bcc23d0e51cc01bd8103d09a5
parent35c55fc156d85a396a975fc17636f560fc02fd65
Merge branch 'net-sched-race-fix'

Cong Wang says:

====================
net_sched: close the race between call_rcu() and cleanup_net()

This patchset tries to fix the race between call_rcu() and
cleanup_net() again. Without holding the netns refcnt the
tc_action_net_exit() in netns workqueue could be called before
filter destroy works in tc filter workqueue. This patchset
moves the netns refcnt from tc actions to tcf_exts, without
breaking per-netns tc actions.

Patch 1 reverts the previous fix, patch 2 introduces two new
API's to help to address the bug and the rest patches switch
to the new API's. Please see each patch for details.

I was not able to reproduce this bug, but now after adding
some delay in filter destroy work I manage to trigger the
crash. After this patchset, the crash is not reproducible
any more and the debugging printk's show the order is expected
too.
====================

Fixes: ddf97ccdd7cb ("net_sched: add network namespace support for tc actions")
Reported-by: Lucas Bates <lucasb@mojatatu.com>
Cc: Lucas Bates <lucasb@mojatatu.com>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>