> On Wed, 11 Aug 2010 16:43:10 -0700 Randy Dunlap <randy.dunlap@oracle.com> wrote:
>
> > On Wed, 11 Aug 2010 16:06:24 -0700
akpm@linux-foundation.org wrote:
> >
> > >
> > > The patch titled
> > > drivers/acpi/apei/erst-dbg.c: get_user(u64) doesn't work on i386
> > > has been added to the -mm tree. Its filename is
> > > drivers-acpi-apei-erst-dbgc-get_useru64-doesnt-work-on-i386.patch
> > >
> > > Before you just go and hit "reply", please:
> > > a) Consider who else should be cc'ed
> > > b) Prefer to cc a suitable mailing list as well
> > > c) Ideally: find the original patch on the mailing list and do a
> > > reply-to-all to that, adding suitable additional cc's
> > >
> > > *** Remember to use Documentation/SubmitChecklist when testing your code ***
> > >
> > > See
http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find
> > > out what to do about this
> > >
> > > The current -mm tree may be found at
http://userweb.kernel.org/~akpm/mmotm/
> > >
> > > ------------------------------------------------------
> > > Subject: drivers/acpi/apei/erst-dbg.c: get_user(u64) doesn't work on i386
> > > From: Andrew Morton <akpm@linux-foundation.org>
> > >
> > > Might be an x86 bug? A get_user() on a u64 on i386 expands to
> > >
> > > #define __get_user_8(__ret_gu, __val_gu, ptr) \
> > > __get_user_x(X, __ret_gu, __val_gu, ptr)
> > >
> > > which emits a call to __get_user_X(), which doesn't exist.
> > >
> > > Kludge around it with copy_from_user().
> > >
> >
> > Reported and fixed yesterday.
>
> Not very well.
>
> + rc = copy_from_user(&record_id, (void __user *)arg,
> + sizeof(u64));
>
> better to use sizeof(record_id).