All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Eric W. Biederman" <ebiederm@xmission.com>
To: Alejandro Colomar <alx@kernel.org>
Cc: Matthew Wilcox <willy@infradead.org>,
	 David Howells <dhowells@redhat.com>,
	 Kees Cook <keescook@chromium.org>,
	linux-mm@kvack.org,  Rolf Eike Beer <eb@emlix.com>,
	 Arnd Bergmann <arnd@arndb.de>,
	 Thomas Gleixner <tglx@linutronix.de>,
	 "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	 Dave Jones <davej@redhat.com>
Subject: Re: 'struct dynamic': struct tag leak in UAPI headers
Date: Tue, 29 Aug 2023 11:48:49 -0500	[thread overview]
Message-ID: <87wmxdokum.fsf@email.froward.int.ebiederm.org> (raw)
In-Reply-To: <8a7df4fd-9cf6-9a2e-feec-1c70197ed5fa@kernel.org> (Alejandro Colomar's message of "Tue, 29 Aug 2023 16:20:42 +0200")

Alejandro Colomar <alx@kernel.org> writes:

> On 2023-08-29 16:17, Matthew Wilcox wrote:
>> Ooh, story time!  Long, long ago, we did not separate "Linux headers"
>> from "libc headers".  It used to be somebody's job to take the files
>> in /usr/src/linux/include/linux and copy them to /usr/include/linux.
>> Bold people used a symlink.  People who cared about things like "Well,
>> POSIX says that" would edit the files after copying them to remove things
>> that POSIX said shouldn't be there or put _GNU_SOURCE markers around them.
>> 
>> At some point, we decided to split the headers to create the uapi headers
>> to make this job easier.  Refinements are, of course, possible, and now
>> easier than ever, but I think it's fair to say that anybody who included
>> <linux/elf.h> at any time in history got given a struct dynamic.
>
> Thanks for the story!  :-)
>
>
>> Well, it's a compile-time failure either way.  Code that depended on it
>> is compiling happily today, and the code that would want to use it
>> doesn't exist yet, so I'd rather err on the side of keeping code written
>> in the last 30 years working.
>
> Fair enough.

The kernel rules do allow removing the structure tag if we no one
is using it.  If someone is using it then the bug is a regression.

If you have the energy you can do a good faith search to see if there
is any likely hood that anyone is using it.  At a quick look I don't
see anything including linux/elf.h.  Add in a debian code search
(is there a github or gitlab code search?) and you can make a
pretty firm dent how widespread that is.

After a good faith search you can merge a patch to remove it,
and then if anyone reports a problem because you somehow missed
them you can revert the change.

If anything like libc that wants to very carefully control it's exported
symbols wants to use linux/elf.h it is probably worth it.  Otherwise it
is probably more work that it is worth.

Eric


  reply	other threads:[~2023-08-29 16:49 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-29 12:08 'struct dynamic': struct tag leak in UAPI headers Alejandro Colomar
2023-08-29 12:24 ` Matthew Wilcox
2023-08-29 13:27   ` Alejandro Colomar
2023-08-29 14:17     ` Matthew Wilcox
2023-08-29 14:20       ` Alejandro Colomar
2023-08-29 16:48         ` Eric W. Biederman [this message]
2023-08-29 17:46           ` Alejandro Colomar
     [not found] ` <20230829185121.326228-1-alx@kernel.org>
     [not found]   ` <6bd4800d-5e99-48a0-a407-2213112f4fb2@kernel.org>
     [not found]     ` <202309220940.B2730B3B@keescook>
2023-09-22 16:44       ` Ping: [PATCH v1] elf, uapi: Remove struct tag 'dynamic' Kees Cook
2023-09-22 17:01         ` Alejandro Colomar
2023-09-22 17:03   ` Kees Cook

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=87wmxdokum.fsf@email.froward.int.ebiederm.org \
    --to=ebiederm@xmission.com \
    --cc=alx@kernel.org \
    --cc=arnd@arndb.de \
    --cc=davej@redhat.com \
    --cc=dhowells@redhat.com \
    --cc=eb@emlix.com \
    --cc=keescook@chromium.org \
    --cc=linux-mm@kvack.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=tglx@linutronix.de \
    --cc=willy@infradead.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.