diff options
author | Cong Wang <[email protected]> | 2020-09-03 19:10:11 -0700 |
---|---|---|
committer | Jakub Kicinski <[email protected]> | 2020-09-04 22:08:59 -0700 |
commit | cc8e58f8325cdf14b9516b61c384cdfd02a4f408 (patch) | |
tree | 2160b26ff40843ab785308ceacab79263d1026fd /drivers/usb/cdns3/cdns3-debug.h | |
parent | c2b947879ca320ac5505c6c29a731ff17da5e805 (diff) |
act_ife: load meta modules before tcf_idr_check_alloc()
The following deadlock scenario is triggered by syzbot:
Thread A: Thread B:
tcf_idr_check_alloc()
...
populate_metalist()
rtnl_unlock()
rtnl_lock()
...
request_module() tcf_idr_check_alloc()
rtnl_lock()
At this point, thread A is waiting for thread B to release RTNL
lock, while thread B is waiting for thread A to commit the IDR
change with tcf_idr_insert() later.
Break this deadlock situation by preloading ife modules earlier,
before tcf_idr_check_alloc(), this is fine because we only need
to load modules we need potentially.
Reported-and-tested-by: [email protected]
Fixes: 0190c1d452a9 ("net: sched: atomically check-allocate action")
Cc: Jamal Hadi Salim <[email protected]>
Cc: Vlad Buslov <[email protected]>
Cc: Jiri Pirko <[email protected]>
Signed-off-by: Cong Wang <[email protected]>
Signed-off-by: Jakub Kicinski <[email protected]>
Diffstat (limited to 'drivers/usb/cdns3/cdns3-debug.h')
0 files changed, 0 insertions, 0 deletions