From: "David S. Miller" <davem@davemloft.net>
To: Russell King <rmk@arm.linux.org.uk>
Cc: torvalds@osdl.org, akpm@osdl.org, dwmw2@infradead.org,
linux-arch@vger.kernel.org
Subject: Re: [patch 19/24] TASK_SIZE is variable.
Date: Sat, 5 Feb 2005 15:44:48 -0800 [thread overview]
Message-ID: <20050205154448.1cc89ee9.davem@davemloft.net> (raw)
In-Reply-To: <20050205090619.C30866@flint.arm.linux.org.uk>
On Sat, 5 Feb 2005 09:06:19 +0000
Russell King <rmk@arm.linux.org.uk> wrote:
> Except that "addr_limit" may be defined by an architecture to be zero
> (which can be interpreted as 4GB by the arch specific code) for the
> case where we allow kernel mode access.
I believe this to be a problematic scheme, let me explain why.
First, "set_fs(KERNEL_DS)" allows kernel mode access, but it absolutely
must not allow user mode accesses. It seems to suggest we might need
some "addr_min" value for access_ok() checking purposes...
Also, as I tried to explain in another email today in this thread,
cpu's fall roughly into two categories:
1) Single virtual address range, page table protection (or
"implicit" protection bits) for address ranges determine
supervisor vs. user access. x86_64, x86, MIPS, and Alpha
I know fall into this category.
2) Really seperate supervisor and user address spaces.
Which one to get at is specified by an added attribute
tag given to load and store instructions. There is an
implicit tag active at all times which says what a normal
load/store accesses. So for example:
load_word [%addr] ASI_USER, %reg
done from supervisor space cannot possibly reference
supervisor space, for any value of %addr.
On sparc64, which uses the model as in #2, there is an
"%asi" register which holds ASI_* values. So we just make
set_fs() update this register with either ASI_USER or ASI_KERNEL.
Then for userspace accesses, we use '[%addr] %asi' addressing
in the load/store instructions.
As a result, access_ok() is a complete NOP. The CPU does all the
work at load/store time.
On platforms using model #1, access_ok() can use some software
state (min_addr/max_addr), which specifies the address where
userspace ends and supervisor virtual addresses begin.
next prev parent reply other threads:[~2005-02-05 23:44 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200502050150.j151osl11380@mail.osdl.org>
2005-02-05 2:16 ` [patch 19/24] TASK_SIZE is variable Linus Torvalds
2005-02-05 3:29 ` Linus Torvalds
2005-02-05 5:52 ` David S. Miller
2005-02-07 10:59 ` David Howells
2005-02-07 19:30 ` David S. Miller
2005-02-08 9:05 ` Martin Schwidefsky
2005-02-08 19:09 ` David S. Miller
2005-02-05 9:06 ` Russell King
2005-02-05 23:44 ` David S. Miller [this message]
2005-02-06 10:50 ` Andi Kleen
2005-02-06 21:19 ` David S. Miller
2005-02-06 21:31 ` Andi Kleen
2005-02-06 21:31 ` David S. Miller
2005-02-06 21:50 ` Andi Kleen
2005-02-06 22:25 ` David S. Miller
2005-02-06 22:31 ` David S. Miller
2005-02-07 8:11 ` Andi Kleen
2005-02-07 19:28 ` David S. Miller
2005-02-07 20:15 ` Andi Kleen
2005-02-07 20:13 ` David S. Miller
2005-02-05 6:54 ` Andi Kleen
2005-02-05 7:18 ` Andrew Morton
2005-02-05 7:40 ` Andi Kleen
2005-02-05 23:27 ` David S. Miller
2005-02-06 10:38 ` Andi Kleen
2005-02-06 13:05 ` Matthew Wilcox
2005-02-05 23:15 ` David S. Miller
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=20050205154448.1cc89ee9.davem@davemloft.net \
--to=davem@davemloft.net \
--cc=akpm@osdl.org \
--cc=dwmw2@infradead.org \
--cc=linux-arch@vger.kernel.org \
--cc=rmk@arm.linux.org.uk \
--cc=torvalds@osdl.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