On 1/24/21 11:15 PM, Leon Romanovsky wrote:
> On Fri, Jan 22, 2021 at 10:55:45PM -0700, David Ahern wrote:
>> On 1/22/21 9:07 PM, Jakub Kicinski wrote:
>>> On Wed, 20 Jan 2021 16:41:48 -0800 Arjun Roy wrote:
>>>> diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
>>>> index 768e93bd5b51..b216270105af 100644
>>>> --- a/include/uapi/linux/tcp.h
>>>> +++ b/include/uapi/linux/tcp.h
>>>> @@ -353,5 +353,9 @@ struct tcp_zerocopy_receive {
>>>>    __u64 copybuf_address;  /* in: copybuf address (small reads) */
>>>>    __s32 copybuf_len; /* in/out: copybuf bytes avail/used or error */
>>>>    __u32 flags; /* in: flags */
>>>> +  __u64 msg_control; /* ancillary data */
>>>> +  __u64 msg_controllen;
>>>> +  __u32 msg_flags;
>>>> +  /* __u32 hole;  Next we must add >1 u32 otherwise length checks fail. */
>>>
>>> Well, let's hope nobody steps on this landmine.. :)
>>>
>>
>> Past suggestions were made to use anonymous declarations - e.g., __u32
>> :32; - as a way of reserving the space for future use. That or declare
>> '__u32 resvd', check that it must be 0 and makes it available for later
>> (either directly or with a union).
> 
> This is the schema (reserved field without union) used by the RDMA UAPIs from
> the beginning (>20 years already) and it works like a charm.
> 
> Highly recommend :).
> 

agreed.

Arjun: would you mind following up with a patch to make this hole
explicit and usable for the next extension? Thanks,

Reply via email to