On Fri, 2021-09-24 at 07:22 +0200, Mike Galbraith wrote: > Greetings, > > I met this lockdep_assert_preemption_disabled() gripe when starting > ltp zram tests. Before actually, I just wasn't paying attention. <snip gripe> net: bridge: mcast: Disable preemption in br_multicast_update_querier() for RT write_seqcount_begin() in br_multicast_update_querier() complains about preemption not being disabled during RT softirq processesing. Since the read side spins, disable preemption across the tiny write side for RT. Signed-off-by: Mike Galbraith <efault@xxxxxx> --- net/bridge/br_multicast.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -1679,10 +1679,14 @@ static void br_multicast_update_querier( { lockdep_assert_held_once(&brmctx->br->multicast_lock); + if (IS_ENABLED(CONFIG_PREEMPT_RT)) + preempt_disable(); write_seqcount_begin(&querier->seq); querier->port_ifidx = ifindex; memcpy(&querier->addr, saddr, sizeof(*saddr)); write_seqcount_end(&querier->seq); + if (IS_ENABLED(CONFIG_PREEMPT_RT)) + preempt_enable(); } static void br_multicast_send_query(struct net_bridge_mcast *brmctx,