diff options
| author | Maxim Mikityanskiy <maximmi@nvidia.com> | 2021-03-11 17:42:06 +0300 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2021-03-12 05:30:32 +0300 |
| commit | fb3a3e37de337ec2941c71ff0bcb83e701f3c9f4 (patch) | |
| tree | b8fdff78da9b94e59f1c53e92ebe9a6913ebbabd /tools/perf/scripts/python/export-to-sqlite.py | |
| parent | 93bde210c4341e79f0cd9cb160d889f4577e40b1 (diff) | |
| download | linux-fb3a3e37de337ec2941c71ff0bcb83e701f3c9f4.tar.xz | |
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 'tools/perf/scripts/python/export-to-sqlite.py')
0 files changed, 0 insertions, 0 deletions
