All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martin KaFai Lau <martin.lau@linux.dev>
To: Jakub Kicinski <kuba@kernel.org>, Kohei Enju <kohei@enjuk.jp>
Cc: netdev@vger.kernel.org, bpf@vger.kernel.org,
	"David S. Miller" <davem@davemloft.net>,
	"Eric Dumazet" <edumazet@google.com>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Simon Horman" <horms@kernel.org>,
	"Alexei Starovoitov" <ast@kernel.org>,
	"Daniel Borkmann" <daniel@iogearbox.net>,
	"Jesper Dangaard Brouer" <hawk@kernel.org>,
	"John Fastabend" <john.fastabend@gmail.com>,
	"Stanislav Fomichev" <sdf@fomichev.me>,
	"Toke Høiland-Jørgensen" <toke@redhat.com>,
	kohei.enju@gmail.com
Subject: Re: [PATCH v1 bpf-next] net: core: allow netdev_upper_get_next_dev_rcu from bh context
Date: Tue, 3 Mar 2026 15:42:12 -0800	[thread overview]
Message-ID: <da42af3a-7595-4e51-8c85-5b419266a8a3@linux.dev> (raw)
In-Reply-To: <20260220110922.94781-1-kohei@enjuk.jp>



On 2/20/26 3:09 AM, Kohei Enju wrote:
> Since XDP programs are called from a NAPI poll context, the RCU
> reference liveness is ensured by local_bh_disable().
> 
> Commit aeea1b86f936 ("bpf, devmap: Exclude XDP broadcast to master
> device") started to call netdev_upper_get_next_dev_rcu() from this
> context, but missed adding rcu_read_lock_bh_held() as a condition to the
> RCU checks.
> While both bh_disabled and rcu_read_lock() provide RCU protection,
> lockdep complains since the check condition is insufficient [1].
> 
> Add rcu_read_lock_bh_held() as condition to help lockdep to understand
> the dereference is safe, in the same way as commit 694cea395fde ("bpf:
> Allow RCU-protected lookups to happen from bh context").
> 
> [1]
>   WARNING: net/core/dev.c:8099 at netdev_upper_get_next_dev_rcu+0x96/0xd0, CPU#0: swapper/0/0
>   ...
>   RIP: 0010:netdev_upper_get_next_dev_rcu+0x96/0xd0
>   ...
>    <IRQ>
>    dev_map_enqueue_multi+0x411/0x970
>    xdp_do_redirect+0xdf2/0x1030
>    __igc_xdp_run_prog+0x6a0/0xc80
>    igc_poll+0x34b0/0x70b0
>    __napi_poll.constprop.0+0x98/0x490
>    net_rx_action+0x8f2/0xfa0
>    handle_softirqs+0x1c7/0x710
>    __irq_exit_rcu+0xb1/0xf0
>    irq_exit_rcu+0x9/0x20
>    common_interrupt+0x7f/0x90
>    </IRQ>
> 
> Signed-off-by: Kohei Enju <kohei@enjuk.jp>
> ---
>   net/core/dev.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 096b3ff13f6b..b99d46b682c6 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -8103,7 +8103,8 @@ struct net_device *netdev_upper_get_next_dev_rcu(struct net_device *dev,
>   {
>   	struct netdev_adjacent *upper;
>   
> -	WARN_ON_ONCE(!rcu_read_lock_held() && !lockdep_rtnl_is_held());
> +	WARN_ON_ONCE(!rcu_read_lock_held() && !rcu_read_lock_bh_held() &&


lgtm after re-reading some of the threads related to commit 694cea395fde.

Jakub, if it looks good to you also, can you take it to the net-next 
tree? Thanks.

Acked-by: Martin KaFai Lau <martin.lau@kernel.org>

> +		     !lockdep_rtnl_is_held());
>   
>   	upper = list_entry_rcu((*iter)->next, struct netdev_adjacent, list);
>   


  reply	other threads:[~2026-03-03 23:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-20 11:09 [PATCH v1 bpf-next] net: core: allow netdev_upper_get_next_dev_rcu from bh context Kohei Enju
2026-03-03 23:42 ` Martin KaFai Lau [this message]
2026-03-04  1:30 ` patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=da42af3a-7595-4e51-8c85-5b419266a8a3@linux.dev \
    --to=martin.lau@linux.dev \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hawk@kernel.org \
    --cc=horms@kernel.org \
    --cc=john.fastabend@gmail.com \
    --cc=kohei.enju@gmail.com \
    --cc=kohei@enjuk.jp \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sdf@fomichev.me \
    --cc=toke@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.