[PATCH rcu/dev 1/3] net: Use call_rcu_flush() for qdisc_free_cb

From: Joel Fernandes (Google)
Date: Wed Nov 16 2022 - 22:16:13 EST


In a networking test on ChromeOS, we find that using the new CONFIG_RCU_LAZY
causes a networking test to fail in the teardown phase.

The failure happens during: ip netns del <name>

Using ftrace, I found the callbacks it was queuing which this series fixes. Use
call_rcu_flush() to revert to the old behavior. With that, the test passes.

Signed-off-by: Joel Fernandes (Google) <joel@xxxxxxxxxxxxxxxxx>
---
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 a9aadc4e6858..63fbf640d3b2 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -1067,7 +1067,7 @@ static void qdisc_destroy(struct Qdisc *qdisc)

trace_qdisc_destroy(qdisc);

- call_rcu(&qdisc->rcu, qdisc_free_cb);
+ call_rcu_flush(&qdisc->rcu, qdisc_free_cb);
}

void qdisc_put(struct Qdisc *qdisc)
--
2.38.1.584.g0f3c55d4c2-goog