Re: [stable] [PATCH] devmem: check vmalloc address on kmemread/write

From: KAMEZAWA Hiroyuki
Date: Wed Feb 03 2010 - 22:31:28 EST


On Thu, 4 Feb 2010 11:18:54 +0800
Wu Fengguang <fengguang.wu@xxxxxxxxx> wrote:

> On Thu, Feb 04, 2010 at 10:58:01AM +0800, KAMEZAWA Hiroyuki wrote:
> > On Thu, 4 Feb 2010 10:42:02 +0800
> > Wu Fengguang <fengguang.wu@xxxxxxxxx> wrote:
> >
> > > From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx>
> > >
> > > commit 325fda71d0badc1073dc59f12a948f24ff05796a upstream.
> > >
> > > Otherwise vmalloc_to_page() will BUG().
> > >
> > > This also makes the kmem read/write implementation aligned with mem(4):
> > > "References to nonexistent locations cause errors to be returned." Here
> > > we return -ENXIO (inspired by Hugh) if no bytes have been transfered
> > > to/from user space, otherwise return partial read/write results.
> > >
> >
> > Wu-san, I have additonal fix to this patch. Now, *ppos update is unstable..
> > Could you make merged one ?
> > Maybe this one makes the all behavior clearer.
> >
> > ==
> > This is a more fix for devmem-check-vmalloc-address-on-kmem-read-write.patch
> > Now, the condition for updating *ppos is not good. (it's updated even if EFAULT
> > occurs..). This fixes that.
> >
> >
> > Reported-by: "Juha Leppanen" <juha_motorsportcom@xxxxxxxxxx>
>
> Sorry, can you elaborate the problem? How it break the application?
>
> It looks that do_generic_file_read() also updates *ppos progressively,
> no one complains about that.
>
Ah...it seems I misunderstood something...ok, *ppos should be updated every time.

I startted from adding comment on following line and got into a maze.

> return (virtr + wrote) ? : err;

Sorry for noise.

-Kame

--
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/