lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 13 Jan 2022 23:06:03 -0500
From:   "Theodore Ts'o" <tytso@....edu>
To:     Borislav Petkov <bp@...en8.de>
Cc:     X86 ML <x86@...nel.org>, Arnd Bergmann <arnd@...db.de>,
        Eric Biederman <ebiederm@...ssion.com>,
        Kees Cook <keescook@...omium.org>,
        LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] x86: Remove a.out support

On Thu, Jan 13, 2022 at 11:56:53PM +0100, Borislav Petkov wrote:
> On Thu, Jan 13, 2022 at 01:47:34PM -0500, Theodore Ts'o wrote:
> > Let's pour one out for being able to run Minix binaries on Linux.  :-)
> 
> https://en.wikipedia.org/wiki/Minix_3:
> 
> "2013-02-21 ... Dropped support for a.out binaries"
> 
> They themselves killed that support a lot earlier. :-)

Well, Minix 3 is a very different beast than the Minix 1.x that Linus
used when he was boot-strapping Linux back in 1991.  :-)

Among other things Minux 1.x is system call compatible with the
original V7 Unix from AT&T, whereas Minux 2.x and higher switch to
having system calls that were Posix comaptible --- and Minix 2, being
at teaching OS, wouldn't have kept any backwards compatibility when
Prof. Tannenbaum released the 2nd edition of his Operating Systems
Design and Implementation book in 1997.

> > Speaking of which, if we're doing this, are there some old system
> > calls that we could remove at the same time?
> 
> Good question.
> 
> Unfortunately, I'm just the janitor removing this and a.out is waaay
> before my time. :-)
> 
> But I'm open to suggestions on how to determine which are those obsolete
> syscalls.

Historically there were a couple of different C libraries
which x86 binaries for Linux could use:

A) minix's libc -- used by binaries compiled using the Minix 1 toolchain
B) Libc 4 -- a fork of GNU Libc version 1, for a.out execuables
C) Libc 5 -- a fork of GNU Libc version 1, for ELF execuables
D) Libc 6 -- GNU Libc version 2, for ELF executables

So I think what this would boil down to is finding those system calls
that were used by (A) and (B), but not referenced in (C) and (D).  I
guess we'd also have to check to make sure that some of these ancient
system calls might still be used by some of the micro libc's, such as
dietlibc, musl, etc.

Is it worth doing?  Perhaps; perhaps not.  It probably wouldn't reduce
the size of the kernel by all *that* much, but getting rid of cruft is
kind of a good thing for its own sake.

Cheers.

						- Ted

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ