Message ID | 20210205230127.310521-1-arjunroy.kdev@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] tcp: Explicitly mark reserved field in tcp_zerocopy_receive args. | expand |
Context | Check | Description |
---|---|---|
netdev/apply | fail | Patch does not apply to net |
netdev/tree_selection | success | Clearly marked for net |
On 2/5/21 4:01 PM, Arjun Roy wrote: > From: Arjun Roy <arjunroy@google.com> > > Explicitly define reserved field and require it to be 0-valued. > > Fixes: 7eeba1706eba ("tcp: Add receive timestamp support for receive zerocopy.") > Signed-off-by: Arjun Roy <arjunroy@google.com> > Signed-off-by: Eric Dumazet <edumazet@google.com> > Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com> > Suggested-by: David Ahern <dsahern@gmail.com> > Suggested-by: Leon Romanovsky <leon@kernel.org> > Suggested-by: Jakub Kicinski <kuba@kernel.org> > --- > include/uapi/linux/tcp.h | 2 +- > net/ipv4/tcp.c | 2 ++ > 2 files changed, 3 insertions(+), 1 deletion(-) > > diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h > index 42fc5a640df4..8fc09e8638b3 100644 > --- a/include/uapi/linux/tcp.h > +++ b/include/uapi/linux/tcp.h > @@ -357,6 +357,6 @@ struct tcp_zerocopy_receive { > __u64 msg_control; /* ancillary data */ > __u64 msg_controllen; > __u32 msg_flags; > - /* __u32 hole; Next we must add >1 u32 otherwise length checks fail. */ > + __u32 reserved; /* set to 0 for now */ > }; > #endif /* _UAPI_LINUX_TCP_H */ > diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c > index e1a17c6b473c..97aee57ab9b4 100644 > --- a/net/ipv4/tcp.c > +++ b/net/ipv4/tcp.c > @@ -4159,6 +4159,8 @@ static int do_tcp_getsockopt(struct sock *sk, int level, > } > if (copy_from_user(&zc, optval, len)) > return -EFAULT; > + if (zc.reserved) > + return -EOPNOTSUPP; usually invalid values for uapi return -EINVAL
On Fri, Feb 5, 2021 at 10:57 PM David Ahern <dsahern@gmail.com> wrote: > > On 2/5/21 4:01 PM, Arjun Roy wrote: > > From: Arjun Roy <arjunroy@google.com> > > > > Explicitly define reserved field and require it to be 0-valued. > > > > Fixes: 7eeba1706eba ("tcp: Add receive timestamp support for receive zerocopy.") > > Signed-off-by: Arjun Roy <arjunroy@google.com> > > Signed-off-by: Eric Dumazet <edumazet@google.com> > > Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com> > > Suggested-by: David Ahern <dsahern@gmail.com> > > Suggested-by: Leon Romanovsky <leon@kernel.org> > > Suggested-by: Jakub Kicinski <kuba@kernel.org> > > --- > > include/uapi/linux/tcp.h | 2 +- > > net/ipv4/tcp.c | 2 ++ > > 2 files changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h > > index 42fc5a640df4..8fc09e8638b3 100644 > > --- a/include/uapi/linux/tcp.h > > +++ b/include/uapi/linux/tcp.h > > @@ -357,6 +357,6 @@ struct tcp_zerocopy_receive { > > __u64 msg_control; /* ancillary data */ > > __u64 msg_controllen; > > __u32 msg_flags; > > - /* __u32 hole; Next we must add >1 u32 otherwise length checks fail. */ > > + __u32 reserved; /* set to 0 for now */ > > }; > > #endif /* _UAPI_LINUX_TCP_H */ > > diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c > > index e1a17c6b473c..97aee57ab9b4 100644 > > --- a/net/ipv4/tcp.c > > +++ b/net/ipv4/tcp.c > > @@ -4159,6 +4159,8 @@ static int do_tcp_getsockopt(struct sock *sk, int level, > > } > > if (copy_from_user(&zc, optval, len)) > > return -EFAULT; > > + if (zc.reserved) > > + return -EOPNOTSUPP; > > usually invalid values for uapi return -EINVAL I'll send out a v2 with that changed then. -Arjun
diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h index 42fc5a640df4..8fc09e8638b3 100644 --- a/include/uapi/linux/tcp.h +++ b/include/uapi/linux/tcp.h @@ -357,6 +357,6 @@ struct tcp_zerocopy_receive { __u64 msg_control; /* ancillary data */ __u64 msg_controllen; __u32 msg_flags; - /* __u32 hole; Next we must add >1 u32 otherwise length checks fail. */ + __u32 reserved; /* set to 0 for now */ }; #endif /* _UAPI_LINUX_TCP_H */ diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index e1a17c6b473c..97aee57ab9b4 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -4159,6 +4159,8 @@ static int do_tcp_getsockopt(struct sock *sk, int level, } if (copy_from_user(&zc, optval, len)) return -EFAULT; + if (zc.reserved) + return -EOPNOTSUPP; lock_sock(sk); err = tcp_zerocopy_receive(sk, &zc, &tss); release_sock(sk);