Kernel Newbies archive on
 help / color / Atom feed
From: "Bjørn Mork" <>
To: "Valdis Klētnieks" <>
Cc:, kernelnewbies <>
Subject: Re: Kernel TLS
Date: Sat, 30 Nov 2019 11:10:50 +0100
Message-ID: <> (raw)
In-Reply-To: <56379.1575105115@turing-police> ("Valdis =?utf-8?Q?Kl=C4=93t?= =?utf-8?Q?nieks=22's?= message of "Sat, 30 Nov 2019 04:11:55 -0500")

"Valdis Klētnieks" <> writes:

> On Sat, 30 Nov 2019 09:13:35 +0100, Bjrn Mork said:
>> include/linux/errno.h is kernel internal only.  The UAPI header is
>> uapi/linux/errno.h, which is an alias for uapi/asm/errno.h.  There is no
>> 524 in include/uapi/asm-generic/errno.h or
>> include/uapi/asm-generic/errno-base.h
>> The codes in include/linux/errno.h should be translated for userspace.
>> This does look like a bug in the kernel tls code.
> Hmm... git grep ENOTSUPP has 1,516 hits.  I haven't checked if it
> gets translated in one place, or if it gets done in a kazillion places.

Definitely more than one, but probably less than a kazillion.

I believe the userspace wrappers usually translates errors from the
lower levels to something conforming to the documented userspace API.

My version of setsockopt(2) says

       On success, zero is returned for the standard options.   On
       error, -1 is returned, and errno is set appropriately.

       Netfilter allows the programmer to define custom socket op‐
       tions with associated handlers; for such options,  the  re‐
       turn value on success is the value returned by the handler.

       EBADF     The  argument sockfd is not a valid file descrip‐

       EFAULT    The address pointed to by  optval  is  not  in  a
                 valid  part  of  the  process address space.  For
                 getsockopt(), this error may also be returned  if
                 optlen  is not in a valid part of the process ad‐
                 dress space.

       EINVAL    optlen invalid in setsockopt().   In  some  cases
                 this error can also occur for an invalid value in
                 optval (e.g., for  the  IP_ADD_MEMBERSHIP  option
                 described in ip(7)).

                 The option is unknown at the level indicated.

       ENOTSOCK  The  file  descriptor  sockfd does not refer to a

If you look at e.g. udp_lib_setsockopt() you'll see that it conforms
strictly to this.  I don't know why do_tcp_setsockopt() doesn't.


Kernelnewbies mailing list

  reply index

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-29 19:36 Jeffrey Walton
2019-11-29 19:46 ` Alexander Mihalicyn
2019-11-29 19:48 ` Valentin Vidić
2019-11-29 19:57   ` Jeffrey Walton
2019-11-29 20:04     ` Jeffrey Walton
2019-11-30  4:37       ` Jeffrey Walton
2019-11-30  6:16         ` Alexander Mihalicyn
2019-11-30  6:40         ` Valdis Klētnieks
2019-11-30  8:13           ` Bjørn Mork
2019-11-30  9:11             ` Valdis Klētnieks
2019-11-30 10:10               ` Bjørn Mork [this message]
2019-11-30 10:34                 ` Valdis Klētnieks
2019-11-30 12:54                   ` [PATCH] net/tls: Fix return values for setsockopt Valentin Vidic
2019-11-30 13:15                     ` Jeffrey Walton
2019-11-30 13:31                       ` Valentin Vidić

Reply instructions:

You may reply publically 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:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Kernel Newbies archive on

Archives are clonable:
	git clone --mirror kernelnewbies/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 kernelnewbies kernelnewbies/ \
	public-inbox-index kernelnewbies

Example config snippet for mirrors

Newsgroup available over NNTP:

AGPL code for this site: git clone