net/sched: taprio: use rtnl_dereference for oper and admin sched in taprio_destroy()
authorVladimir Oltean <vladimir.oltean@nxp.com>
Thu, 15 Sep 2022 10:50:42 +0000 (13:50 +0300)
committerJakub Kicinski <kuba@kernel.org>
Tue, 20 Sep 2022 20:53:33 +0000 (13:53 -0700)
commit9af23657b33679b5b8d8579ca1cc0214398f576f
tree9a1a9b70aaf2d8081a8c4e12c0e33452fd955b75
parent18cdd2f0998a4967b1fff4c43ed9aef049e42c39
net/sched: taprio: use rtnl_dereference for oper and admin sched in taprio_destroy()

Sparse complains that taprio_destroy() dereferences q->oper_sched and
q->admin_sched without rcu_dereference(), since they are marked as __rcu
in the taprio private structure.

1671:28: warning: incorrect type in argument 1 (different address spaces)
1671:28:    expected struct callback_head *head
1671:28:    got struct callback_head [noderef] __rcu *
1674:28: warning: incorrect type in argument 1 (different address spaces)
1674:28:    expected struct callback_head *head
1674:28:    got struct callback_head [noderef] __rcu *

To silence that build warning, do actually use rtnl_dereference(), since
we know the rtnl_mutex is held at the time of q->destroy().

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/sched/sch_taprio.c