Messages in this thread | | | Date | Fri, 24 Jul 2009 11:44:32 +0200 | From | Michal Simek <> | Subject | Re: generic uaccess.h |
| |
Arnd Bergmann wrote: > On Friday 24 July 2009, Michal Simek wrote: >> I have just look at asm-generic uaccess.h and there is one thing which >> seems to me wrong. >> >> For put_user macro - you use __copy_to_user but you have for 64bit case >> ifdef CONFIG_64BIT >> but look at fs/eventfd: eventfd_read function. At least for this >> function(syscall) is necessary "return" 64bit >> value on 32bit machines too. >> IMHO that ifdef CONFIG_64BIT shouldn't be there. >> >> What do you think? >> If you agree with me, I'll generate proper patch with description. > > The code was intentional, because 32 bit architectures normally > don't acces u64 values efficiently. I would expect the memcpy > to produce better object code in that case. > Did you see an actual bug in my version or are you only > guessing that the assignment should work better than the > memcpy?
I have just compile noMMU version and first bootup failed. I miss that memcpy after it. Ooou.
I'll let you know what my results are.
Michal
> > What object code do you get with > > int test(unsigned long long __user *out, unsigned long long in) > { > return put_user(in, ptr); > } > > in both cases?
> > Arnd <><
-- Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854
| |