From: Jiri Olsa <olsajiri@gmail.com>
To: Lennart Poettering <mzxreary@0pointer.net>
Cc: bpf@vger.kernel.org
Subject: Re: bpf kernel code leaks internal error codes to userspace
Date: Thu, 30 May 2024 14:18:45 +0200 [thread overview]
Message-ID: <Zlhupe1tXj8ZS1go@krava> (raw)
In-Reply-To: <Zlb-ojvGgdGZRvR8@gardel-login>
On Wed, May 29, 2024 at 12:08:34PM +0200, Lennart Poettering wrote:
> Hi!
>
> It seems that the bpf code in the kernel sometimes leaks
> kernel-internal error codes, i.e. those from include/linux/errno.h
> into userspace (as opposed to those from
> include/uapi/asm-generic/errno.h which are public userspace facing
> API).
>
> According to the comments from that internal header file: "These
> should never be seen by user programs."
>
> Specifically, this is about ENOTSUPP, which userspace simply cannot
> handle, there's no error 524 defined in glibc or anywhere else.
>
> We ran into this in systemd recently:
>
> https://github.com/systemd/systemd/issues/32170#issuecomment-2076928761
>
> (a google search reveals others were hit by this too)
>
> We commited a work-around for this for now:
>
> https://github.com/systemd/systemd/pull/33067
>
> But it really sucks to work around this in userspace, this is a kernel
> internal definition after all, conflicting with userspace (where
> ENOTSUPP is just an alias for EOPNOTSUPP), hence not really fixable.
>
> ENOSUPP is kinda useless anyway, since EOPNOTSUPP is pretty much
> equally expressive, and something userspace can actually handle.
>
> Various kernel subsystems have been fixed over the years in similar
> situations. For example:
>
> https://patchwork.kernel.org/project/linux-wireless/patch/20231211085121.3841b71c867d.Idf2ad01d9dfe8d6d6c352bf02deb06e49701ad1d@changeid/
>
> or
>
> https://patchwork.kernel.org/project/linux-media/patch/af5b2e8ac6695383111328267a689bcf1c0ecdb1.1702369869.git.sean@mess.org/
>
> or
>
> https://patchwork.ozlabs.org/project/linux-mtd/patch/20231129064311.272422-1-acelan.kao@canonical.com/
>
> I think BPF should really fix that, too.
hm, I don't think we can change that, user space already depends
on those values and we'd break it with new value
it's unfortunate, but I don't think we can do much about that,
other than enforcing EOPNOTSUPP for new code
jirka
>
> Or if you insist on leaking internals to userspace then please move
> the definition to the public "uapi" headers, but yikes you are in for
> some pain then given the conflicting userspace definitions.
>
> Lennart
>
next prev parent reply other threads:[~2024-05-30 12:18 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-29 10:08 bpf kernel code leaks internal error codes to userspace Lennart Poettering
2024-05-30 12:18 ` Jiri Olsa [this message]
2024-05-30 14:17 ` Lennart Poettering
2024-05-30 17:09 ` Linus Torvalds
2024-05-31 7:16 ` Jiri Olsa
2024-05-31 17:10 ` Alexei Starovoitov
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=Zlhupe1tXj8ZS1go@krava \
--to=olsajiri@gmail.com \
--cc=bpf@vger.kernel.org \
--cc=mzxreary@0pointer.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
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