From: David Howells <dhowells@redhat.com>
To: Hawkins Jiawei <yin31149@gmail.com>
Cc: dhowells@redhat.com, "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
Yonghong Song <yhs@fb.com>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@kernel.org>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel-mentees@lists.linuxfoundation.org,
bpf@vger.kernel.org
Subject: Re: [PATCH] net: Fix suspicious RCU usage in bpf_sk_reuseport_detach()
Date: Tue, 16 Aug 2022 22:16:46 +0100 [thread overview]
Message-ID: <804153.1660684606@warthog.procyon.org.uk> (raw)
In-Reply-To: <20220816103452.479281-1-yin31149@gmail.com>
Hawkins Jiawei <yin31149@gmail.com> wrote:
> +__rcu_dereference_sk_user_data_with_flags_check(const struct sock *sk,
> + uintptr_t flags, bool condition)
That doesn't work. RCU_LOCKDEP_WARN() relies on anything passing on a
condition down to it to be a macro so that it can vanish the 'condition'
argument without causing an undefined symbol for 'lockdep_is_held' if lockdep
is disabled:
x86_64-linux-gnu-ld: kernel/bpf/reuseport_array.o: in function `bpf_sk_reuseport_detach':
/data/fs/linux-fs/build3/../kernel/bpf/reuseport_array.c:28: undefined reference to `lockdep_is_held'
So either __rcu_dereference_sk_user_data_with_flags_check() has to be a macro,
or we need to go with something like the first version of my patch where I
don't pass the condition through. Do you have a preference?
David
WARNING: multiple messages have this Message-ID (diff)
From: David Howells <dhowells@redhat.com>
To: Hawkins Jiawei <yin31149@gmail.com>
Cc: Song Liu <songliubraving@fb.com>, Martin KaFai Lau <kafai@fb.com>,
Daniel Borkmann <daniel@iogearbox.net>,
linux-kernel@vger.kernel.org,
John Fastabend <john.fastabend@gmail.com>,
Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
dhowells@redhat.com, Eric Dumazet <edumazet@google.com>,
netdev@vger.kernel.org, Yonghong Song <yhs@fb.com>,
KP Singh <kpsingh@kernel.org>, Jakub Kicinski <kuba@kernel.org>,
bpf@vger.kernel.org, Paolo Abeni <pabeni@redhat.com>,
linux-kernel-mentees@lists.linuxfoundation.org,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH] net: Fix suspicious RCU usage in bpf_sk_reuseport_detach()
Date: Tue, 16 Aug 2022 22:16:46 +0100 [thread overview]
Message-ID: <804153.1660684606@warthog.procyon.org.uk> (raw)
In-Reply-To: <20220816103452.479281-1-yin31149@gmail.com>
Hawkins Jiawei <yin31149@gmail.com> wrote:
> +__rcu_dereference_sk_user_data_with_flags_check(const struct sock *sk,
> + uintptr_t flags, bool condition)
That doesn't work. RCU_LOCKDEP_WARN() relies on anything passing on a
condition down to it to be a macro so that it can vanish the 'condition'
argument without causing an undefined symbol for 'lockdep_is_held' if lockdep
is disabled:
x86_64-linux-gnu-ld: kernel/bpf/reuseport_array.o: in function `bpf_sk_reuseport_detach':
/data/fs/linux-fs/build3/../kernel/bpf/reuseport_array.c:28: undefined reference to `lockdep_is_held'
So either __rcu_dereference_sk_user_data_with_flags_check() has to be a macro,
or we need to go with something like the first version of my patch where I
don't pass the condition through. Do you have a preference?
David
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
next prev parent reply other threads:[~2022-08-16 21:17 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-16 9:34 [PATCH] net: Fix suspicious RCU usage in bpf_sk_reuseport_detach() David Howells
2022-08-16 10:34 ` Hawkins Jiawei
2022-08-16 10:34 ` Hawkins Jiawei
2022-08-16 13:09 ` David Howells
2022-08-16 13:09 ` David Howells
2022-08-16 21:49 ` Martin KaFai Lau
2022-08-16 21:49 ` Martin KaFai Lau via Linux-kernel-mentees
2022-08-16 18:21 ` Jakub Kicinski
2022-08-16 18:21 ` Jakub Kicinski
2022-08-16 20:01 ` David Howells
2022-08-16 20:01 ` David Howells
2022-08-16 21:16 ` David Howells [this message]
2022-08-16 21:16 ` David Howells
2022-08-16 23:44 ` Jakub Kicinski
2022-08-16 23:44 ` Jakub Kicinski
2022-08-17 0:43 ` Martin KaFai Lau
2022-08-17 0:43 ` Martin KaFai Lau via Linux-kernel-mentees
2022-08-17 1:39 ` Jakub Kicinski
2022-08-17 1:39 ` Jakub Kicinski
2022-08-17 3:00 ` Hawkins Jiawei
2022-08-17 3:00 ` Hawkins Jiawei
2022-08-17 20:55 ` David Howells
2022-08-17 20:55 ` David Howells
2022-08-17 23:42 ` Jakub Kicinski
2022-08-17 23:42 ` Jakub Kicinski
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=804153.1660684606@warthog.procyon.org.uk \
--to=dhowells@redhat.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=john.fastabend@gmail.com \
--cc=kafai@fb.com \
--cc=kpsingh@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel-mentees@lists.linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=songliubraving@fb.com \
--cc=yhs@fb.com \
--cc=yin31149@gmail.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.