diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index f78c4e53dc8c161e334781970bbff6069c084ebb..cd3eda4c09297961bd3263c17943c854bb60b3b6 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c @@ -2299,7 +2299,7 @@ int ip_mr_output(struct net *net, struct sock *sk, struct sk_buff *skb) struct mr_table *mrt; int vif; - WARN_ON_ONCE(!rcu_read_lock_held()); + guard(rcu)(); dev = rt->dst.dev; if (IPCB(skb)->flags & IPSKB_FORWARDED) @@ -2313,7 +2313,6 @@ int ip_mr_output(struct net *net, struct sock *sk, struct sk_buff *skb) if (IS_ERR(mrt)) goto mc_output; - /* already under rcu_read_lock() */ cache = ipmr_cache_find(mrt, ip_hdr(skb)->saddr, ip_hdr(skb)->daddr); if (!cache) { vif = ipmr_find_vif(mrt, dev);