diff options
author | Maxim Mikityanskiy <maximmi@nvidia.com> | 2021-03-11 16:42:06 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-03-11 18:30:32 -0800 |
commit | fb3a3e37de337ec2941c71ff0bcb83e701f3c9f4 (patch) | |
tree | b8fdff78da9b94e59f1c53e92ebe9a6913ebbabd /drivers/vme | |
parent | 93bde210c4341e79f0cd9cb160d889f4577e40b1 (diff) |
sch_htb: Fix offload cleanup in htb_destroy on htb_init failure
htb_init may fail to do the offload if it's not supported or if a
runtime error happens when allocating direct qdiscs. In those cases
TC_HTB_CREATE command is not sent to the driver, however, htb_destroy
gets called anyway and attempts to send TC_HTB_DESTROY.
It shouldn't happen, because the driver didn't receive TC_HTB_CREATE,
and also because the driver may not support ndo_setup_tc at all, while
q->offload is true, and htb_destroy mistakenly thinks the offload is
supported. Trying to call ndo_setup_tc in the latter case will lead to a
NULL pointer dereference.
This commit fixes the issues with htb_destroy by deferring assignment of
q->offload until after the TC_HTB_CREATE command. The necessary cleanup
of the offload entities is already done in htb_init.
Reported-by: syzbot+b53a709f04722ca12a3c@syzkaller.appspotmail.com
Fixes: d03b195b5aa0 ("sch_htb: Hierarchical QoS hardware offload")
Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/vme')
0 files changed, 0 insertions, 0 deletions