@@ -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 */
@@ -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 -EINVAL;
lock_sock(sk);
err = tcp_zerocopy_receive(sk, &zc, &tss);
release_sock(sk);