From: Robert Hancock <hancockr@shaw.ca>
To: Clemens Kolbitsch <clemens.kol@gmx.at>
Cc: Chris Smith <smitty1elkml@gmail.com>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: Copy large memory regions from & to userspace
Date: Fri, 31 Aug 2007 19:48:12 -0600 [thread overview]
Message-ID: <46D8C4DC.2080307@shaw.ca> (raw)
In-Reply-To: <fa.tMlh7ZYvNMxPEL69Eww8ErwDEmw@ifi.uio.no>
Clemens Kolbitsch wrote:
> On Friday 31 August 2007 15:25:40 you wrote:
>> On 8/30/07, Clemens Kolbitsch <clemens.kol@gmx.at> wrote:
>>> Hi!
>>> Just a short question: What is the correct method of copying large areas
>>> of memory from userspace into userspace when running in kernel-mode?
>> relayfs?
>
> no... I'm copying user-memory to user-memory, not kernel-to-user, however
> running the code in kernel-mode.
>
> what i wanted to know is how to check the access-rights...
> i didn't get any other answers, so for now i'm just using
>
> if (access_ok(VERIFY_READ, from, PAGE_SIZE) &&
> access_ok(VERIFY_WRITE, to, PAGE_SIZE))
> {
> memcpy(to, from, PAGE_SIZE);
> }
>
> and hope that this is the *correct* way to do it...
No, it's not. access_ok does not guarantee that the memory region can be
validly read or written. It only allows using __copy_to_user or
__copy_from_user which skips the same checks that access_ok does.
I'm not aware of any code in the kernel that does userspace-to-userspace
copies directly. Likely because there's rarely a need for it?
--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/
next parent reply other threads:[~2007-09-01 1:53 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fa.0TqRgC3Smn96vb+Bwv5QRWKBTQg@ifi.uio.no>
[not found] ` <fa.x2L04usZZxVIMYSdrufu+Hen9aY@ifi.uio.no>
[not found] ` <fa.tMlh7ZYvNMxPEL69Eww8ErwDEmw@ifi.uio.no>
2007-09-01 1:48 ` Robert Hancock [this message]
2007-09-01 6:10 ` Copy large memory regions from & to userspace Jan Engelhardt
2007-08-30 22:29 Clemens Kolbitsch
[not found] ` <9b53a56d0708310625q14defcb1l98ab8ce1df2c8fd7@mail.gmail.com>
2007-08-31 13:45 ` Clemens Kolbitsch
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=46D8C4DC.2080307@shaw.ca \
--to=hancockr@shaw.ca \
--cc=clemens.kol@gmx.at \
--cc=linux-kernel@vger.kernel.org \
--cc=smitty1elkml@gmail.com \
/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.