From: Jakub Sitnicki <jakub@cloudflare.com>
To: Martin Lau <kafai@fb.com>
Cc: "bpf\@vger.kernel.org" <bpf@vger.kernel.org>,
"netdev\@vger.kernel.org" <netdev@vger.kernel.org>,
"kernel-team\@cloudflare.com" <kernel-team@cloudflare.com>,
Alexei Starovoitov <alexei.starovoitov@gmail.com>,
Daniel Borkmann <daniel@iogearbox.net>,
"John Fastabend" <john.fastabend@gmail.com>,
Lorenz Bauer <lmb@cloudflare.com>
Subject: Re: [PATCH bpf-next v3 04/12] tcp_bpf: Don't let child socket inherit parent protocol ops on copy
Date: Thu, 23 Jan 2020 11:34:10 +0100 [thread overview]
Message-ID: <878sly31i5.fsf@cloudflare.com> (raw)
In-Reply-To: <20200122203538.juspsqgwki7rn45q@kafai-mbp.dhcp.thefacebook.com>
On Wed, Jan 22, 2020 at 09:35 PM CET, Martin Lau wrote:
> On Wed, Jan 22, 2020 at 02:05:41PM +0100, Jakub Sitnicki wrote:
>> Prepare for cloning listening sockets that have their protocol callbacks
>> overridden by sk_msg. Child sockets must not inherit parent callbacks that
>> access state stored in sk_user_data owned by the parent.
>>
>> Restore the child socket protocol callbacks before it gets hashed and any
>> of the callbacks can get invoked.
>>
>> Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
>> ---
>> include/net/tcp.h | 7 +++++++
>> net/ipv4/tcp_bpf.c | 13 +++++++++++++
>> net/ipv4/tcp_minisocks.c | 2 ++
>> 3 files changed, 22 insertions(+)
>>
>> diff --git a/include/net/tcp.h b/include/net/tcp.h
>> index 9dd975be7fdf..ac205d31e4ad 100644
>> --- a/include/net/tcp.h
>> +++ b/include/net/tcp.h
>> @@ -2181,6 +2181,13 @@ int tcp_bpf_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
>> int nonblock, int flags, int *addr_len);
>> int __tcp_bpf_recvmsg(struct sock *sk, struct sk_psock *psock,
>> struct msghdr *msg, int len, int flags);
>> +#ifdef CONFIG_NET_SOCK_MSG
>> +void tcp_bpf_clone(const struct sock *sk, struct sock *child);
> nit. "struct sock *child" vs ...
>
>> +#else
>> +static inline void tcp_bpf_clone(const struct sock *sk, struct sock *child)
>> +{
>> +}
>> +#endif
>>
>> /* Call BPF_SOCK_OPS program that returns an int. If the return value
>> * is < 0, then the BPF op failed (for example if the loaded BPF
>> diff --git a/net/ipv4/tcp_bpf.c b/net/ipv4/tcp_bpf.c
>> index 4f25aba44ead..16060e0893a1 100644
>> --- a/net/ipv4/tcp_bpf.c
>> +++ b/net/ipv4/tcp_bpf.c
>> @@ -582,6 +582,19 @@ static void tcp_bpf_close(struct sock *sk, long timeout)
>> saved_close(sk, timeout);
>> }
>>
>> +/* If a child got cloned from a listening socket that had tcp_bpf
>> + * protocol callbacks installed, we need to restore the callbacks to
>> + * the default ones because the child does not inherit the psock state
>> + * that tcp_bpf callbacks expect.
>> + */
>> +void tcp_bpf_clone(const struct sock *sk, struct sock *newsk)
> "struct sock *newsk" here.
>
> Could be a follow-up.
>
> Other than that,
> Acked-by: Martin KaFai Lau <kafai@fb.com>
Will fix in v4. Thanks!
next prev parent reply other threads:[~2020-01-23 10:34 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-22 13:05 [PATCH bpf-next v3 00/12] Extend SOCKMAP to store listening sockets Jakub Sitnicki
2020-01-22 13:05 ` [PATCH bpf-next v3 01/12] bpf, sk_msg: Don't clear saved sock proto on restore Jakub Sitnicki
2020-01-22 13:05 ` [PATCH bpf-next v3 02/12] net, sk_msg: Annotate lockless access to sk_prot on clone Jakub Sitnicki
2020-01-22 22:57 ` Martin Lau
2020-01-22 13:05 ` [PATCH bpf-next v3 03/12] net, sk_msg: Clear sk_user_data pointer on clone if tagged Jakub Sitnicki
2020-01-22 13:05 ` [PATCH bpf-next v3 04/12] tcp_bpf: Don't let child socket inherit parent protocol ops on copy Jakub Sitnicki
2020-01-22 20:35 ` Martin Lau
2020-01-23 10:34 ` Jakub Sitnicki [this message]
2020-01-22 13:05 ` [PATCH bpf-next v3 05/12] bpf, sockmap: Allow inserting listening TCP sockets into sockmap Jakub Sitnicki
2020-01-22 20:52 ` Martin Lau
2020-01-23 10:41 ` Jakub Sitnicki
2020-01-22 13:05 ` [PATCH bpf-next v3 06/12] bpf, sockmap: Don't set up sockmap progs for listening sockets Jakub Sitnicki
2020-01-22 16:24 ` Lorenz Bauer
2020-01-22 18:07 ` Jakub Sitnicki
2020-01-22 23:11 ` Martin Lau
2020-01-22 13:05 ` [PATCH bpf-next v3 07/12] bpf, sockmap: Return socket cookie on lookup from syscall Jakub Sitnicki
2020-01-22 13:05 ` [PATCH bpf-next v3 08/12] bpf, sockmap: Let all kernel-land lookup values in SOCKMAP Jakub Sitnicki
2020-01-22 23:02 ` Martin Lau
2020-01-22 13:05 ` [PATCH bpf-next v3 09/12] bpf: Allow selecting reuseport socket from a SOCKMAP Jakub Sitnicki
2020-01-22 23:08 ` Martin Lau
2020-01-22 13:05 ` [PATCH bpf-next v3 10/12] net: Generate reuseport group ID on group creation Jakub Sitnicki
2020-01-22 22:53 ` Martin Lau
2020-01-23 10:59 ` Jakub Sitnicki
2020-01-22 13:05 ` [PATCH bpf-next v3 11/12] selftests/bpf: Extend SK_REUSEPORT tests to cover SOCKMAP Jakub Sitnicki
2020-01-22 13:05 ` [PATCH bpf-next v3 12/12] selftests/bpf: Tests for SOCKMAP holding listening sockets Jakub Sitnicki
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=878sly31i5.fsf@cloudflare.com \
--to=jakub@cloudflare.com \
--cc=alexei.starovoitov@gmail.com \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=john.fastabend@gmail.com \
--cc=kafai@fb.com \
--cc=kernel-team@cloudflare.com \
--cc=lmb@cloudflare.com \
--cc=netdev@vger.kernel.org \
/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.