linux-mips
[Top] [All Lists]

Re: Bug#380531: linux-2.6: mips and mipsel personality(2) support is bro

To: Martin Michlmayr <tbm@cyrius.com>
Subject: Re: Bug#380531: linux-2.6: mips and mipsel personality(2) support is broken
From: Thiemo Seufer <ths@networkno.de>
Date: Mon, 31 Jul 2006 00:19:19 +0100
Cc: linux-mips@linux-mips.org, Roger Leigh <rleigh@debian.org>, 380531-silent@bugs.debian.org
In-reply-to: <20060730224137.GP17134@deprecation.cyrius.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20060730183939.7119.48747.reportbug@hardknott.home.whinlatter.ukfsn.org> <20060730224137.GP17134@deprecation.cyrius.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.5.12-2006-07-14
Martin Michlmayr wrote:
> FYI, but report tht "mips and mipsel personality(2) support is broken"

This patch fixes sys_personality for the o32 emulation by
 a) killing the sign extension bits
 b) tighten the bitmask match for current->personality (like it is done
    for x86_64)


Thiemo


Signed-off-by:  Thiemo Seufer <ths@networkno.de>


--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -1053,7 +1053,9 @@ asmlinkage long sys32_newuname(struct ne
 asmlinkage int sys32_personality(unsigned long personality)
 {
        int ret;
-       if (current->personality == PER_LINUX32 && personality == PER_LINUX)
+       personality &= 0xffffffff;
+       if (personality(current->personality) == PER_LINUX32 &&
+           personality == PER_LINUX)
                personality = PER_LINUX32;
        ret = sys_personality(personality);
        if (ret == PER_LINUX32)

<Prev in Thread] Current Thread [Next in Thread>