On Fri 04 Sep 2020 at 05:10, Cong Wang <xiyou.wangc...@gmail.com> 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: syzbot+80e32b5d1f9923f8a...@syzkaller.appspotmail.com > Fixes: 0190c1d452a9 ("net: sched: atomically check-allocate action") > Cc: Jamal Hadi Salim <j...@mojatatu.com> > Cc: Vlad Buslov <vla...@mellanox.com> > Cc: Jiri Pirko <j...@resnulli.us> > Signed-off-by: Cong Wang <xiyou.wangc...@gmail.com> > ---
Thanks for fixing this, Cong! I've verified that all tdc ife tests pass with this patch. Reviewed-by: Vlad Buslov <v...@buslov.dev> Tested-by: Vlad Buslov <v...@buslov.dev>