Message ID | 1547878830-22042-1-git-send-email-laoar.shao@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | BPF Maintainers |
Headers | show |
Series | [bpf-next] bpf: sock recvbuff must be limited by rmem_max in bpf_setsockopt() | expand |
On Sat, Jan 19, 2019 at 02:20:30PM +0800, Yafang Shao wrote: > When sock recvbuff is set by bpf_setsockopt(), the value must by limited > by rmem_max. > It is the same with sendbuff. > > Signed-off-by: Yafang Shao <laoar.shao@gmail.com> For bug fixes, please target the bpf branch instead of bpf-next and please also add the Fixes tag: Fixes: 8c4b4c7e9ff0 ("bpf: Add setsockopt helper function to bpf") Patch LGTM, Acked-by: Martin KaFai Lau <kafai@fb.com> Cc: Lawrence Brakmo, thought? > --- > net/core/filter.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/net/core/filter.c b/net/core/filter.c > index 447dd1b..f30b58a 100644 > --- a/net/core/filter.c > +++ b/net/core/filter.c > @@ -4111,10 +4111,12 @@ static unsigned long bpf_xdp_copy(void *dst_buff, const void *src_buff, > /* Only some socketops are supported */ > switch (optname) { > case SO_RCVBUF: > + val = min_t(u32, val, sysctl_rmem_max); > sk->sk_userlocks |= SOCK_RCVBUF_LOCK; > sk->sk_rcvbuf = max_t(int, val * 2, SOCK_MIN_RCVBUF); > break; > case SO_SNDBUF: > + val = min_t(u32, val, sysctl_wmem_max); > sk->sk_userlocks |= SOCK_SNDBUF_LOCK; > sk->sk_sndbuf = max_t(int, val * 2, SOCK_MIN_SNDBUF); > break; > -- > 1.8.3.1 >
On 1/22/19, 9:42 AM, "Martin Lau" <kafai@fb.com> wrote: On Sat, Jan 19, 2019 at 02:20:30PM +0800, Yafang Shao wrote: > When sock recvbuff is set by bpf_setsockopt(), the value must by limited > by rmem_max. > It is the same with sendbuff. > > Signed-off-by: Yafang Shao <laoar.shao@gmail.com> For bug fixes, please target the bpf branch instead of bpf-next and please also add the Fixes tag: Fixes: 8c4b4c7e9ff0 ("bpf: Add setsockopt helper function to bpf") Patch LGTM, Acked-by: Martin KaFai Lau <kafai@fb.com> Cc: Lawrence Brakmo, thought? Yafang, thank you for the fix, LGTM. Acked-by: Lawrence Brakmo <brakmo@fb.com> > --- > net/core/filter.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/net/core/filter.c b/net/core/filter.c > index 447dd1b..f30b58a 100644 > --- a/net/core/filter.c > +++ b/net/core/filter.c > @@ -4111,10 +4111,12 @@ static unsigned long bpf_xdp_copy(void *dst_buff, const void *src_buff, > /* Only some socketops are supported */ > switch (optname) { > case SO_RCVBUF: > + val = min_t(u32, val, sysctl_rmem_max); > sk->sk_userlocks |= SOCK_RCVBUF_LOCK; > sk->sk_rcvbuf = max_t(int, val * 2, SOCK_MIN_RCVBUF); > break; > case SO_SNDBUF: > + val = min_t(u32, val, sysctl_wmem_max); > sk->sk_userlocks |= SOCK_SNDBUF_LOCK; > sk->sk_sndbuf = max_t(int, val * 2, SOCK_MIN_SNDBUF); > break; > -- > 1.8.3.1 >
> On 23 Jan 2019, at 1:42 AM, Martin Lau <kafai@fb.com> wrote: > > On Sat, Jan 19, 2019 at 02:20:30PM +0800, Yafang Shao wrote: >> When sock recvbuff is set by bpf_setsockopt(), the value must by limited >> by rmem_max. >> It is the same with sendbuff. >> >> Signed-off-by: Yafang Shao <laoar.shao@gmail.com> > For bug fixes, please target the bpf branch instead of bpf-next > and please also add the Fixes tag: > Fixes: 8c4b4c7e9ff0 ("bpf: Add setsockopt helper function to bpf”) Sure. Will change it and send V2. Thanks Yafang > Patch LGTM, > Acked-by: Martin KaFai Lau <kafai@fb.com> > > Cc: Lawrence Brakmo, thought? > >> --- >> net/core/filter.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/net/core/filter.c b/net/core/filter.c >> index 447dd1b..f30b58a 100644 >> --- a/net/core/filter.c >> +++ b/net/core/filter.c >> @@ -4111,10 +4111,12 @@ static unsigned long bpf_xdp_copy(void *dst_buff, const void *src_buff, >> /* Only some socketops are supported */ >> switch (optname) { >> case SO_RCVBUF: >> + val = min_t(u32, val, sysctl_rmem_max); >> sk->sk_userlocks |= SOCK_RCVBUF_LOCK; >> sk->sk_rcvbuf = max_t(int, val * 2, SOCK_MIN_RCVBUF); >> break; >> case SO_SNDBUF: >> + val = min_t(u32, val, sysctl_wmem_max); >> sk->sk_userlocks |= SOCK_SNDBUF_LOCK; >> sk->sk_sndbuf = max_t(int, val * 2, SOCK_MIN_SNDBUF); >> break; >> -- >> 1.8.3.1 >>
diff --git a/net/core/filter.c b/net/core/filter.c index 447dd1b..f30b58a 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -4111,10 +4111,12 @@ static unsigned long bpf_xdp_copy(void *dst_buff, const void *src_buff, /* Only some socketops are supported */ switch (optname) { case SO_RCVBUF: + val = min_t(u32, val, sysctl_rmem_max); sk->sk_userlocks |= SOCK_RCVBUF_LOCK; sk->sk_rcvbuf = max_t(int, val * 2, SOCK_MIN_RCVBUF); break; case SO_SNDBUF: + val = min_t(u32, val, sysctl_wmem_max); sk->sk_userlocks |= SOCK_SNDBUF_LOCK; sk->sk_sndbuf = max_t(int, val * 2, SOCK_MIN_SNDBUF); break;
When sock recvbuff is set by bpf_setsockopt(), the value must by limited by rmem_max. It is the same with sendbuff. Signed-off-by: Yafang Shao <laoar.shao@gmail.com> --- net/core/filter.c | 2 ++ 1 file changed, 2 insertions(+)