linux-mips
[Top] [All Lists]

Re: access_ok and CONFIG_MIPS32 for 2.6

To: Dimitri Torfs <dimitri@sonycom.com>
Subject: Re: access_ok and CONFIG_MIPS32 for 2.6
From: Ralf Baechle <ralf@linux-mips.org>
Date: Fri, 2 Jan 2004 20:44:03 +0100
Cc: linux-mips@linux-mips.org
In-reply-to: <20040102145941.GA13426@sonycom.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20040102145941.GA13426@sonycom.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.4.1i
On Fri, Jan 02, 2004 at 03:59:41PM +0100, Dimitri Torfs wrote:

>   the mask used in access_ok to check the validity of an address range
>   evaluates to -TASK_SIZE for user processes. In case of
>   CONFIG_MIPS32, TASK_SIZE is defined as 0x7fff8000UL, so -TASK_SIZE
>   evaluates to 0x80008000, making access_ok return false for all
>   addresses with bit 15 and 31 set. Surely the mask should be 0x80000000. 
> 
>   Does anybody know why TASK_SIZE is set to 0x7fff8000 and not
>   0x80000000 ?

There is a weird special case were 32-bit code running on a 64-bit kernel
with c0_status.ux set will behave differently than on a 32-bit processor
or with c0_status.ux clear.  The workaround for 64-bit kernels is to
leave the top 32kB of the 2GB user virtual address space unused.  For
sake of symmetry we do this on both 32-bit and 64-bit kernels.

  Ralf

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