On Fri 04 Sep 2020 at 05:10, Cong Wang <[email protected]> wrote: > 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]> > ---
Thanks for fixing this, Cong! I've verified that all tdc ife tests pass with this patch. Reviewed-by: Vlad Buslov <[email protected]> Tested-by: Vlad Buslov <[email protected]>
