public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: David Laight <David.Laight@ACULAB•COM>
To: 'Stephen Hemminger' <stephen@networkplumber•org>,
	Arjun Roy <arjunroy.kdev@gmail•com>
Cc: "davem@davemloft•net" <davem@davemloft•net>,
	"netdev@vger•kernel.org" <netdev@vger•kernel.org>,
	"arjunroy@google•com" <arjunroy@google•com>,
	"edumazet@google•com" <edumazet@google•com>,
	"soheil@google•com" <soheil@google•com>
Subject: RE: [net-next v2 1/8] net-zerocopy: Copy straggler unaligned data for TCP Rx. zerocopy.
Date: Thu, 3 Dec 2020 23:01:11 +0000	[thread overview]
Message-ID: <384c6be35cc044eeb1bbcf5dcc6d819f@AcuMS.aculab.com> (raw)
In-Reply-To: <20201202161527.51fcdcd7@hermes.local>

From: Stephen Hemminger
> Sent: 03 December 2020 00:15
> 
> On Wed,  2 Dec 2020 14:09:38 -0800
> Arjun Roy <arjunroy.kdev@gmail•com> wrote:
> 
> > diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
> > index cfcb10b75483..62db78b9c1a0 100644
> > --- a/include/uapi/linux/tcp.h
> > +++ b/include/uapi/linux/tcp.h
> > @@ -349,5 +349,7 @@ struct tcp_zerocopy_receive {
> >  	__u32 recv_skip_hint;	/* out: amount of bytes to skip */
> >  	__u32 inq; /* out: amount of bytes in read queue */
> >  	__s32 err; /* out: socket error */
> > +	__u64 copybuf_address;	/* in: copybuf address (small reads) */
> > +	__s32 copybuf_len; /* in/out: copybuf bytes avail/used or error */

You need to swap the order of the above fields to avoid padding
and differing alignments for 32bit and 64bit apps.

> >  };
> >  #endif /* _UAPI_LINUX_TCP_H */
> 
> You can't safely grow the size of a userspace API without handling the
> case of older applications.  Logic in setsockopt() would have to handle
> both old and new sizes of the structure.

You also have to allow for old (working) applications being recompiled
with the new headers.
So you cannot rely on the fields being zero even if you are passed
the size of the structure.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)


  parent reply	other threads:[~2020-12-03 23:03 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-02 22:09 [net-next v2 0/8] Perf. optimizations for TCP Recv. Zerocopy Arjun Roy
2020-12-02 22:09 ` [net-next v2 1/8] net-zerocopy: Copy straggler unaligned data for TCP Rx. zerocopy Arjun Roy
2020-12-03  0:15   ` Stephen Hemminger
2020-12-03  0:24     ` Arjun Roy
2020-12-03 23:01     ` David Laight [this message]
2020-12-03 23:14       ` Eric Dumazet
2020-12-04  9:02         ` David Laight
2020-12-03 23:19       ` Arjun Roy
2020-12-03 23:24         ` Arjun Roy
2020-12-04  9:03           ` David Laight
2020-12-04 22:37             ` Arjun Roy
2020-12-02 22:09 ` [net-next v2 2/8] net-tcp: Introduce tcp_recvmsg_locked() Arjun Roy
2020-12-02 22:09 ` [net-next v2 3/8] net-zerocopy: Refactor skb frag fast-forward op Arjun Roy
2020-12-02 22:09 ` [net-next v2 4/8] net-zerocopy: Refactor frag-is-remappable test Arjun Roy
2020-12-02 22:09 ` [net-next v2 5/8] net-zerocopy: Fast return if inq < PAGE_SIZE Arjun Roy
2020-12-02 22:09 ` [net-next v2 6/8] net-zerocopy: Introduce short-circuit small reads Arjun Roy
2020-12-02 22:09 ` [net-next v2 7/8] net-zerocopy: Set zerocopy hint when data is copied Arjun Roy
2020-12-02 22:09 ` [net-next v2 8/8] net-zerocopy: Defer vm zap unless actually needed Arjun Roy

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=384c6be35cc044eeb1bbcf5dcc6d819f@AcuMS.aculab.com \
    --to=david.laight@aculab$(echo .)com \
    --cc=arjunroy.kdev@gmail$(echo .)com \
    --cc=arjunroy@google$(echo .)com \
    --cc=davem@davemloft$(echo .)net \
    --cc=edumazet@google$(echo .)com \
    --cc=netdev@vger$(echo .)kernel.org \
    --cc=soheil@google$(echo .)com \
    --cc=stephen@networkplumber$(echo .)org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox