• Yunjian Wang's avatar
    sch_htb: fix refcount leak in htb_parent_to_leaf_offload · 944d671d
    Yunjian Wang authored
    The commit ae81feb7 ("sch_htb: fix null pointer dereference
    on a null new_q") fixes a NULL pointer dereference bug, but it
    is not correct.
    
    Because htb_graft_helper properly handles the case when new_q
    is NULL, and after the previous patch by skipping this call
    which creates an inconsistency : dev_queue->qdisc will still
    point to the old qdisc, but cl->parent->leaf.q will point to
    the new one (which will be noop_qdisc, because new_q was NULL).
    The code is based on an assumption that these two pointers are
    the same, so it can lead to refcount leaks.
    
    The correct fix is to add a NULL pointer check to protect
    qdisc_refcount_inc inside htb_parent_to_leaf_offload.
    
    Fixes: ae81feb7 ("sch_htb: fix null pointer dereference on a null new_q")
    Signed-off-by: default avatarYunjian Wang <wangyunjian@huawei.com>
    Suggested-by: default avatarMaxim Mikityanskiy <maximmi@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    944d671d
sch_htb.c 53.9 KB