From: "Arnd Bergmann" <arnd@arndb.de>
To: "John Paul Adrian Glaubitz" <glaubitz@physik.fu-berlin.de>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Matt Turner" <mattst88@gmail.com>,
"Eric W. Biederman" <ebiederm@xmission.com>,
"Kees Cook" <kees@kernel.org>,
"Paul E. McKenney" <paulmck@kernel.org>,
linux-alpha@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Cc: "Michael Cree" <mcree@orcon.net.nz>, "Sam James" <sam@gentoo.org>,
"Maciej W. Rozycki" <macro@orcam.me.uk>,
"Geert Uytterhoeven" <geert@linux-m68k.org>,
"Michael Karcher" <kernel@mkarcher.dialup.fu-berlin.de>,
"Chris Hofstaedtler" <zeha@debian.org>,
util-linux@vger.kernel.org, linux-mips@vger.kernel.org,
loongarch@lists.linux.dev
Subject: Re: [PATCH] alpha: Fix personality flag propagation across an exec
Date: Thu, 09 Jan 2025 09:56:28 +0100 [thread overview]
Message-ID: <82d33a2d-dffe-4268-a175-4536b3f9c07f@app.fastmail.com> (raw)
In-Reply-To: <bff3cfad8a87799101891b4f786c5104db9dab13.camel@physik.fu-berlin.de>
On Thu, Jan 9, 2025, at 09:46, John Paul Adrian Glaubitz wrote:
> On Thu, 2025-01-09 at 09:43 +0100, Arnd Bergmann wrote:
>> On Thu, Jan 9, 2025, at 09:01, Arnd Bergmann wrote:
>> > On Fri, Jan 3, 2025, at 15:01, John Paul Adrian Glaubitz wrote:
>> >
>> > >
>> > > #define SET_PERSONALITY(EX) \
>> > > - set_personality(((EX).e_flags & EF_ALPHA_32BIT) \
>> > > - ? PER_LINUX_32BIT : PER_LINUX)
>> > > + set_personality((((EX).e_flags & EF_ALPHA_32BIT) \
>> > > + ? PER_LINUX_32BIT : PER_LINUX) | (current->personality & (~PER_MASK)))
>> >
>> > This looks wrong to me: since ADDR_LIMIT_32BIT is not part of
>> > PER_MASK, executing a regular binary from a taso binary no longer
>> > reverts back to the entire 64-bit address space.
>> >
>> > It seems that the behavior on most other architectures changed in 2012
>> > commit 16f3e95b3209 ("cross-arch: don't corrupt personality flags upon
>> > exec()").
>> >
>
> So, if I understand this correctly, we should just use PER_MASK on alpha
> for 64-bit executables and allow the bits to be cleared for 32-bit binaries?
I think ideally the EF_ALPHA_32BIT handling should use TIF_32BIT
as we do on other architectures, at that point the custom SET_PERSONALITY()
can be removed in favor of the asm-generic version.
Alternatively this could do something like the arm32 version (note
that on arm, PER_LINUX_32BIT/ADDR_LIMIT_32BIT means "allow using
the entire 32-bit address space rather than limiting to 26 bits for
compatibility", while on alpha it means "use only 31 instead of
42 bits for addressing", but the logic can be the same):
unsigned int personality = current->personality & ~PER_MASK;
/*
* APCS-26 is only valid for OABI executables
*/
if ((eflags & EF_ARM_EABI_MASK) == EF_ARM_EABI_UNKNOWN &&
(eflags & EF_ARM_APCS_26))
personality &= ~ADDR_LIMIT_32BIT;
else
personality |= ADDR_LIMIT_32BIT;
set_personality(personality);
In any case, I think we should fix alpha, mips and loongarch at
the same time, to make sure it doesn't take another decade to
fix the rest.
Arnd
next prev parent reply other threads:[~2025-01-09 8:56 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-03 14:01 John Paul Adrian Glaubitz
2025-01-08 22:49 ` Kees Cook
2025-01-09 0:52 ` Jeff Xu
2025-01-09 8:01 ` Arnd Bergmann
2025-01-09 8:43 ` Arnd Bergmann
2025-01-09 8:46 ` John Paul Adrian Glaubitz
2025-01-09 8:56 ` Arnd Bergmann [this message]
2025-01-09 9:12 ` John Paul Adrian Glaubitz
2025-01-09 16:18 ` Eric W. Biederman
2025-01-09 16:52 ` Arnd Bergmann
2025-01-09 17:17 ` Eric W. Biederman
2025-01-09 20:10 ` Maciej W. Rozycki
2025-01-09 20:53 ` Arnd Bergmann
2025-01-12 14:40 ` Maciej W. Rozycki
2025-01-10 0:28 ` Richard Henderson
2025-01-11 0:16 ` [PATCH] alpha/elf: Fix misc/setarch test of util-linux by removing 32bit support Eric W. Biederman
2025-01-11 1:17 ` Richard Henderson
2025-01-11 10:37 ` John Paul Adrian Glaubitz
2025-01-12 14:40 ` Maciej W. Rozycki
2025-01-12 14:56 ` John Paul Adrian Glaubitz
2025-01-13 5:39 ` [PATCH v2] " Eric W. Biederman
2025-01-18 10:35 ` Ivan Kokshaysky
2025-01-26 17:15 ` John Paul Adrian Glaubitz
2025-01-27 13:27 ` Ivan Kokshaysky
2025-02-03 11:55 ` John Paul Adrian Glaubitz
2025-02-06 15:42 ` Kees Cook
2025-01-11 11:26 ` [PATCH] " Arnd Bergmann
2025-01-11 15:27 ` Ivan Kokshaysky
2025-01-13 5:32 ` Eric W. Biederman
2025-01-11 21:26 ` John Paul Adrian Glaubitz
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=82d33a2d-dffe-4268-a175-4536b3f9c07f@app.fastmail.com \
--to=arnd@arndb.de \
--cc=ebiederm@xmission.com \
--cc=geert@linux-m68k.org \
--cc=glaubitz@physik.fu-berlin.de \
--cc=kees@kernel.org \
--cc=kernel@mkarcher.dialup.fu-berlin.de \
--cc=linux-alpha@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=loongarch@lists.linux.dev \
--cc=macro@orcam.me.uk \
--cc=mattst88@gmail.com \
--cc=mcree@orcon.net.nz \
--cc=paulmck@kernel.org \
--cc=richard.henderson@linaro.org \
--cc=sam@gentoo.org \
--cc=util-linux@vger.kernel.org \
--cc=zeha@debian.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox