net: sched: gred: prevent races when adding offloads to stats
authorJakub Kicinski <kuba@kernel.org>
Fri, 13 Jan 2023 04:41:37 +0000 (20:41 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Feb 2023 07:34:25 +0000 (08:34 +0100)
commit58bdab02b2250acdb18fc8e7d1a10d2a43fb54f6
treef22ca7f844e950b5c3b63e00a6e23595b9f4e5eb
parentb0b029ee04ef3dd6c7da0922204fb9e47a0b9010
net: sched: gred: prevent races when adding offloads to stats

[ Upstream commit 339346d49ae0859fe19b860998867861d37f1a76 ]

Naresh reports seeing a warning that gred is calling
u64_stats_update_begin() with preemption enabled.
Arnd points out it's coming from _bstats_update().

We should be holding the qdisc lock when writing
to stats, they are also updated from the datapath.

Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
Link: https://lore.kernel.org/all/CA+G9fYsTr9_r893+62u6UGD3dVaCE-kN9C-Apmb2m=hxjc1Cqg@mail.gmail.com/
Fixes: e49efd5288bd ("net: sched: gred: support reporting stats from offloads")
Link: https://lore.kernel.org/r/20230113044137.1383067-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/sched/sch_gred.c