[PATCH net] net: sched: fix lockdep_set_class() typo error for sch->seqlock
From: Yunsheng Lin <hidden>
Date: 2021-08-03 10:59:25
According to comment in qdisc_alloc(), sch->seqlock's lockdep
class key should be set to qdisc_tx_busylock, due to possible
type error, sch->busylock's lockdep class key is set to
qdisc_tx_busylock, which is duplicated because sch->busylock's
lockdep class key is already set in qdisc_alloc().
So fix it by replacing sch->busylock with sch->seqlock.
Fixes: 96009c7d500e ("sched: replace __QDISC_STATE_RUNNING bit with a spin lock")
Signed-off-by: Yunsheng Lin <redacted>
---
commit ab92d68fc22f ("net: core: add generic lockdep keys")
seems to fix the above error without mentioning that, and then
it is reverted by commit 1a33e10e4a95 ("net: partially revert
dynamic lockdep key changes"), but the blamed commit still be
96009c7d500e ("sched: replace __QDISC_STATE_RUNNING bit with
a spin lock").
---
net/sched/sch_generic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index d9ac60f..a8dd06c 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c@@ -913,7 +913,7 @@ struct Qdisc *qdisc_alloc(struct netdev_queue *dev_queue, /* seqlock has the same scope of busylock, for NOLOCK qdisc */ spin_lock_init(&sch->seqlock); - lockdep_set_class(&sch->busylock, + lockdep_set_class(&sch->seqlock, dev->qdisc_tx_busylock ?: &qdisc_tx_busylock); seqcount_init(&sch->running);
--
2.7.4