From: Eric Dumazet <eric.dumazet@gmail.com> To: Lorenz Bauer <lmb@cloudflare.com>, Richard Henderson <rth@twiddle.net>, Ivan Kokshaysky <ink@jurassic.park.msu.ru>, Matt Turner <mattst88@gmail.com>, Thomas Bogendoerfer <tsbogend@alpha.franken.de>, "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>, Helge Deller <deller@gmx.de>, "David S. Miller" <davem@davemloft.net>, Arnd Bergmann <arnd@arndb.de>, Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Andrii Nakryiko <andrii@kernel.org>, Jakub Kicinski <kuba@kernel.org> Cc: kernel-team@cloudflare.com, linux-api@vger.kernel.org, linux-alpha@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, sparclinux@vger.kernel.org, linux-arch@vger.kernel.org, netdev@vger.kernel.org, bpf@vger.kernel.org Subject: Re: [PATCH bpf 1/4] net: add SO_NETNS_COOKIE socket option Date: Wed, 10 Feb 2021 15:51:32 +0100 [thread overview] Message-ID: <a922e31d-efce-35c3-c584-cf1bdcf93c5d@gmail.com> (raw) In-Reply-To: <20210210120425.53438-2-lmb@cloudflare.com> On 2/10/21 1:04 PM, Lorenz Bauer wrote: > We need to distinguish which network namespace a socket belongs to. > BPF has the useful bpf_get_netns_cookie helper for this, but accessing > it from user space isn't possible. Add a read-only socket option that > returns the netns cookie, similar to SO_COOKIE. If network namespaces > are disabled, SO_NETNS_COOKIE returns the cookie of init_net. > > The BPF helpers change slightly: instead of returning 0 when network > namespaces are disabled we return the init_net cookie as for the > socket option. > > Cc: linux-api@vger.kernel.org > Signed-off-by: Lorenz Bauer <lmb@cloudflare.com> > --- ... > > +static inline u64 __sock_gen_netns_cookie(struct sock *sk) > +{ > +#ifdef CONFIG_NET_NS > + return __net_gen_cookie(sk->sk_net.net); > +#else > + return __net_gen_cookie(&init_net); > +#endif > +} > + > +static inline u64 sock_gen_netns_cookie(struct sock *sk) > +{ > + u64 cookie; > + > + preempt_disable(); > + cookie = __sock_gen_netns_cookie(sk); > + preempt_enable(); > + > + return cookie; > +} > + > I suggest we make net->net_cookie a mere u64 initialized in setup_net(), instead of having to preempt_disable() around reading it. (Here and in your patch 2/4) Your patches would be much simpler. Cleanup patch : https://patchwork.kernel.org/project/netdevbpf/patch/20210210144144.24284-1-eric.dumazet@gmail.com/
WARNING: multiple messages have this Message-ID (diff)
From: Eric Dumazet <eric.dumazet@gmail.com> To: Lorenz Bauer <lmb@cloudflare.com>, Richard Henderson <rth@twiddle.net>, Ivan Kokshaysky <ink@jurassic.park.msu.ru>, Matt Turner <mattst88@gmail.com>, Thomas Bogendoerfer <tsbogend@alpha.franken.de>, "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>, Helge Deller <deller@gmx.de>, "David S. Miller" <davem@davemloft.net>, Arnd Bergmann <arnd@arndb.de>, Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Andrii Nakryiko <andrii@kernel.org>, Jakub Kicinski <kuba@kernel.org> Cc: kernel-team@cloudflare.com, linux-api@vger.kernel.org, linux-alpha@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, sparclinux@vger.kernel.org, linux-arch@vger.kernel.org, netdev@vger.kernel.org, bpf@vger.kernel.org Subject: Re: [PATCH bpf 1/4] net: add SO_NETNS_COOKIE socket option Date: Wed, 10 Feb 2021 14:51:32 +0000 [thread overview] Message-ID: <a922e31d-efce-35c3-c584-cf1bdcf93c5d@gmail.com> (raw) In-Reply-To: <20210210120425.53438-2-lmb@cloudflare.com> On 2/10/21 1:04 PM, Lorenz Bauer wrote: > We need to distinguish which network namespace a socket belongs to. > BPF has the useful bpf_get_netns_cookie helper for this, but accessing > it from user space isn't possible. Add a read-only socket option that > returns the netns cookie, similar to SO_COOKIE. If network namespaces > are disabled, SO_NETNS_COOKIE returns the cookie of init_net. > > The BPF helpers change slightly: instead of returning 0 when network > namespaces are disabled we return the init_net cookie as for the > socket option. > > Cc: linux-api@vger.kernel.org > Signed-off-by: Lorenz Bauer <lmb@cloudflare.com> > --- ... > > +static inline u64 __sock_gen_netns_cookie(struct sock *sk) > +{ > +#ifdef CONFIG_NET_NS > + return __net_gen_cookie(sk->sk_net.net); > +#else > + return __net_gen_cookie(&init_net); > +#endif > +} > + > +static inline u64 sock_gen_netns_cookie(struct sock *sk) > +{ > + u64 cookie; > + > + preempt_disable(); > + cookie = __sock_gen_netns_cookie(sk); > + preempt_enable(); > + > + return cookie; > +} > + > I suggest we make net->net_cookie a mere u64 initialized in setup_net(), instead of having to preempt_disable() around reading it. (Here and in your patch 2/4) Your patches would be much simpler. Cleanup patch : https://patchwork.kernel.org/project/netdevbpf/patch/20210210144144.24284-1-eric.dumazet@gmail.com/
next prev parent reply other threads:[~2021-02-10 14:52 UTC|newest] Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-02-10 12:04 [PATCH bpf 0/4] Expose network namespace cookies to user space Lorenz Bauer 2021-02-10 12:04 ` [PATCH bpf 1/4] net: add SO_NETNS_COOKIE socket option Lorenz Bauer 2021-02-10 12:04 ` Lorenz Bauer 2021-02-10 14:51 ` Eric Dumazet [this message] 2021-02-10 14:51 ` Eric Dumazet 2021-02-10 12:04 ` [PATCH bpf 2/4] nsfs: add an ioctl to discover the network namespace cookie Lorenz Bauer 2021-02-10 15:07 ` kernel test robot 2021-02-10 15:07 ` kernel test robot 2021-02-10 15:26 ` kernel test robot 2021-02-10 15:26 ` kernel test robot 2021-03-01 10:04 ` Christian Brauner 2021-03-02 9:47 ` Lorenz Bauer 2021-03-02 10:14 ` Christian Brauner 2021-02-10 12:04 ` [PATCH bpf 3/4] tools/testing: add test for NS_GET_COOKIE Lorenz Bauer 2021-02-10 12:04 ` [PATCH bpf 4/4] tools/testing: add a selftest for SO_NETNS_COOKIE Lorenz Bauer
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=a922e31d-efce-35c3-c584-cf1bdcf93c5d@gmail.com \ --to=eric.dumazet@gmail.com \ --cc=James.Bottomley@HansenPartnership.com \ --cc=andrii@kernel.org \ --cc=arnd@arndb.de \ --cc=ast@kernel.org \ --cc=bpf@vger.kernel.org \ --cc=daniel@iogearbox.net \ --cc=davem@davemloft.net \ --cc=deller@gmx.de \ --cc=ink@jurassic.park.msu.ru \ --cc=kernel-team@cloudflare.com \ --cc=kuba@kernel.org \ --cc=linux-alpha@vger.kernel.org \ --cc=linux-api@vger.kernel.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mips@vger.kernel.org \ --cc=linux-parisc@vger.kernel.org \ --cc=lmb@cloudflare.com \ --cc=mattst88@gmail.com \ --cc=netdev@vger.kernel.org \ --cc=rth@twiddle.net \ --cc=sparclinux@vger.kernel.org \ --cc=tsbogend@alpha.franken.de \ /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: linkBe 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.