Re: [PATCH] net/tls: Fix return values for setsockopt

From: Willem de Bruijn
Date: Wed Dec 04 2019 - 15:43:43 EST


On Wed, Dec 4, 2019 at 2:36 PM Jakub Kicinski
<jakub.kicinski@xxxxxxxxxxxxx> wrote:
>
> (there is a v2, in case you missed)

Thanks. I meant to respond to your comment. (but should have done sooner :)

> On Wed, 4 Dec 2019 14:22:55 -0500, Willem de Bruijn wrote:
> > On Tue, Dec 3, 2019 at 6:08 PM Jakub Kicinski wrote:
> > > On Tue, 3 Dec 2019 23:44:58 +0100, Valentin Vidic wrote:
> > > > ENOTSUPP is not available in userspace:
> > > >
> > > > setsockopt failed, 524, Unknown error 524
> > > >
> > > > Signed-off-by: Valentin Vidic <vvidic@xxxxxxxxxxxxxxxxxxxxxx>
> > >
> > > I'm not 100% clear on whether we can change the return codes after they
> > > had been exposed to user space for numerous releases..
> >
> > This has also come up in the context of SO_ZEROCOPY in the past. In my
> > opinion the answer is no. A quick grep | wc -l in net/ shows 99
> > matches for this error code. Only a fraction of those probably make it
> > to userspace, but definitely more than this single case.
> >
> > If anything, it may be time to define it in uapi?
>
> No opinion but FWIW I'm toying with some CI for netdev, I've added a
> check for use of ENOTSUPP, apparently checkpatch already sniffs out
> uses of ENOSYS, so seems appropriate to add this one.

Good idea if not exposing this in UAPI.

> > > But if we can - please fix the tools/testing/selftests/net/tls.c test
> > > as well, because it expects ENOTSUPP.
> >
> > Even if changing the error code, EOPNOTSUPP is arguably a better
> > replacement. The request itself is valid. Also considering forward
> > compatibility.
>
> For the case TLS version case?

Yes. It's a more specific signal. Quite a few error paths already return EINVAL.