• Cong Wang's avatar
    net_sched: check error pointer in tcf_dump_walker() · 580e4273
    Cong Wang authored
    Although we take RTNL on dump path, it is possible to
    skip RTNL on insertion path. So the following race condition
    is possible:
    
    rtnl_lock()		// no rtnl lock
    			mutex_lock(&idrinfo->lock);
    			// insert ERR_PTR(-EBUSY)
    			mutex_unlock(&idrinfo->lock);
    tc_dump_action()
    rtnl_unlock()
    
    So we have to skip those temporary -EBUSY entries on dump path
    too.
    
    Reported-and-tested-by: syzbot+b47bc4f247856fb4d9e1@syzkaller.appspotmail.com
    Fixes: 0fedc63f ("net_sched: commit action insertions together")
    Cc: Vlad Buslov <vladbu@mellanox.com>
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    580e4273
act_api.c 39 KB