On Wed, Mar 29, 2017 at 2:03 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > it's not as if having the possibility to inline them > would really complicate the generic side of things... I disagree. I think one of the biggest problems with our current uaccess.h mess is just how illegible the header files are, and the INLINE_COPY_{TO,FROM}_USER thing is not helping. I think it would be much better if the header file just had extern unsigned long _copy_from_user(void *, const void __user *, unsigned long); and nothing else. No unnecessary noise. The same goes for things like [__]copy_in_user() - why is that thing still inlined? If it was a *macro*, it might be useful due to the might_fault() thing giving the caller information, but that's not even the case here, so we'd actually be much better off without any of that inlining stuff. Do it all in lib/usercopy.c, and move the might_fault() in there too. Linus