From: Chris Metcalf <cmetcalf@tilera.com>
To: Jiri Kosina <jkosina@suse.cz>
Cc: Arnd Bergmann <arnd@arndb.de>,
Andrew Morton <akpm@linux-foundation.org>,
Haavard Skinnemoen <hskinnemoen@gmail.com>,
Hans-Christian Egtvedt <egtvedt@samfundet.no>,
Mike Frysinger <vapier@gentoo.org>,
Mark Salter <msalter@redhat.com>,
Mikael Starvik <starvik@axis.com>,
Jesper Nilsson <jesper.nilsson@axis.com>,
David Howells <dhowells@redhat.com>,
Yoshinori Sato <ysato@users.sourceforge.jp>,
Richard Kuo <rkuo@codeaurora.org>,
Hirokazu Takata <takata@linux-m32r.org>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Michal Simek <monstr@monstr.eu>,
Koichi Yasutake <yasutake.koichi@jp.panasonic.com>,
Jonas Bonn <jonas@southpole.se>,
Chen Liqin <liqin.chen@sunplusct.com>,
Lennox Wu <lennox.wu@gmail.com>, Paul Mundt <lethal@linux-sh.org>,
"David S. Miller" <davem@davemloft.net>,
Chris Zankel <chris@zankel.net>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] [RFC] cross-arch: don't corrupt personality flags upon exec()
Date: Tue, 28 Aug 2012 15:04:06 -0400 [thread overview]
Message-ID: <503D1626.9030409@tilera.com> (raw)
In-Reply-To: <alpine.LNX.2.00.1208281135320.22447@pobox.suse.cz>
On 8/28/2012 2:49 PM, Jiri Kosina wrote:
> On Tue, 28 Aug 2012, Chris Metcalf wrote:
>>> On tile, the PER_LINUX_32BIT is always set for 32 bit compat tasks in a
>>> 64 bit kernel, which is harmless but wrong anyway. Also this, tile never
>>> calls set_personality, which is also harmless because it just means that
>>> exec_domain switching on tile is broken, but the only non-bogus
>>> exec_domain besides the default one is an experimental support for Acorn
>>> RISC OS binaries that was last updated in 2002 for for linux-2.5.49.
>> Arnd, thanks for the drive-by code review. Is this change the correct fix
>> for your observation?
>>
>> diff --git a/arch/tile/include/asm/elf.h b/arch/tile/include/asm/elf.h
>> index d16d006..fd31920 100644
>> --- a/arch/tile/include/asm/elf.h
>> +++ b/arch/tile/include/asm/elf.h
>> @@ -156,12 +156,12 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm,
>> #undef SET_PERSONALITY
>> #define SET_PERSONALITY(ex) \
>> do { \
>> - current->personality = PER_LINUX; \
>> + set_personality(PER_LINUX); \
>> current_thread_info()->status &= ~TS_COMPAT; \
>> } while (0)
>> #define COMPAT_SET_PERSONALITY(ex) \
>> do { \
>> - current->personality = PER_LINUX_32BIT; \
>> + set_personality(PER_LINUX); \
>> current_thread_info()->status |= TS_COMPAT; \
>> } while (0)
> Actually this is also wrong. You should be rather doing
>
> set_personality(PER_LINUX | (current->personality & (~PER_MASK)))
>
> otherwise you clobber the upper personality bits upon exec().
>
> Something like the patch below. Either you can take it for tile, or I can
> ask Andrew to fold it into my tree-wide fix currently waiting in -mm. Just
> let me know.
It looks fine for tile, except that your change still uses PER_LINUX_32BIT,
which Arnd points out is wrong; my proposed patch changed it to just
PER_LINUX, though I'm not completely clear as to whether this is correct.
The tilegx compat mode is an ILP32 mode where the compiler emits 32-bit Elf
binaries and the compat layer is used to translate to and from 32-bit
pointer and long, but nothing else. It sounds like PER_LINUX applies
better than PER_LINUX_32BIT based on the fact that the extra 32-bit flag
isn't actually used in any architecture-independent code (nor in tile code,
which just checks whether something is a compat task per se, rather than
looking at the personality bits).
Since you have a treewide fix going anyway, I'm happy for you to push this
to Andrew. If it's OK with the one suggested change, you can add my
Acked-by: Chris Metcalf <cmetcalf@tilera.com>
--
Chris Metcalf, Tilera Corp.
http://www.tilera.com
prev parent reply other threads:[~2012-08-28 19:04 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-03 10:01 [PATCH] [RFC] cross-arch: don't corrupt personality flags upon exec() Jiri Kosina
2012-08-13 13:19 ` Jiri Kosina
2012-08-15 22:45 ` Andrew Morton
2012-08-22 19:27 ` Arnd Bergmann
2012-08-28 16:53 ` Chris Metcalf
2012-08-28 18:49 ` Jiri Kosina
2012-08-28 19:04 ` Chris Metcalf [this message]
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=503D1626.9030409@tilera.com \
--to=cmetcalf@tilera.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=chris@zankel.net \
--cc=davem@davemloft.net \
--cc=dhowells@redhat.com \
--cc=egtvedt@samfundet.no \
--cc=geert@linux-m68k.org \
--cc=hskinnemoen@gmail.com \
--cc=jesper.nilsson@axis.com \
--cc=jkosina@suse.cz \
--cc=jonas@southpole.se \
--cc=lennox.wu@gmail.com \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liqin.chen@sunplusct.com \
--cc=monstr@monstr.eu \
--cc=msalter@redhat.com \
--cc=rkuo@codeaurora.org \
--cc=starvik@axis.com \
--cc=takata@linux-m32r.org \
--cc=vapier@gentoo.org \
--cc=yasutake.koichi@jp.panasonic.com \
--cc=ysato@users.sourceforge.jp \
/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.