Re: [PATCH] bitmap: separate bitmap parsing for user buffer andkernel buffer

From: Andrew Morton
Date: Wed Oct 04 2006 - 21:58:27 EST


On Wed, 4 Oct 2006 18:33:37 -0700
Inaky Perez-Gonzalez <inaky@xxxxxxxxxxxxxxx> wrote:

> On Wednesday 04 October 2006 18:10, Andrew Morton wrote:
> > On Wed, 4 Oct 2006 17:56:30 -0700
> > Reinette Chatre <reinette.chatre@xxxxxxxxxxxxxxx> wrote:
> > > + if (is_user) {
> > > + if (__get_user(c, buf++))
> > > + return -EFAULT;
> > > + }
> > > + else
> > > + c = *buf++;
> >
> > Is this actually needed? __get_user(kernel_address) works OK and (believe
> > it or not, given all the stuff it involves) boils down to a single
> > instruction.
>
> We weren't too sure if that'd be true in all kinds of arches and
> memory models. If it works for kernel space too, then we can fold
> out a lot of code...

We use __get_user() in this fashion in several places in core kernel
already, although it's usually to find out "will this address give me a
fault", rather than to actually read a value.

There's some precedent for the `is_user' approach as well - it has the
advantage of being more sparse-friendly, and perhaps clearer to read.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/