[PATCH] net: Add missing __raw_write_seqcount_end() and seqcount_release()

From: Tom Zanussi
Date: Fri Nov 13 2020 - 14:04:15 EST


The patch ('net: Properly annotate the try-lock for the seqlock") adds
__raw_write_seqcount_begin() in qdisc_run_begin() but omits the
corresponding __raw_write_seqcount_end() and seqcount_release() in
qdisc_run_end().

Add it unconditionally, since qdisc_run_end() is never called unless
qdisc_run_begin() succeeds, and if it succeeds,
__raw_write_seqcount_begin() seqcount_acquire() will have been called.

Signed-off-by: Tom Zanussi <zanussi@xxxxxxxxxx>
---
include/net/sch_generic.h | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index 112d2dca8b08..c5ccce4f8f62 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -192,7 +192,11 @@ static inline bool qdisc_run_begin(struct Qdisc *qdisc)
static inline void qdisc_run_end(struct Qdisc *qdisc)
{
#ifdef CONFIG_PREEMPT_RT
+ seqcount_t *s = &qdisc->running.seqcount;
+
write_sequnlock(&qdisc->running);
+ __raw_write_seqcount_end(s);
+ seqcount_release(&s->dep_map, 1, _RET_IP_);
#else
write_seqcount_end(&qdisc->running);
#endif
--
2.17.1