Re: [PATCH] x86/uaccess: Implement get_kernel()

Linus Torvalds
2015-04-10T18:09:41Z

On Fri, Apr 10, 2015 at 11:04 AM, Ingo Molnar <mingo@kernel.org> wrote:
>
>>
>> So maybe "get_kernel_stalepointer()" or something like that.
>
> Ok.

Note that I'm not at all married to that particular name, I just want
something that describes the requirements a bit more.

>> - I think we should look at sharing the code for __get_user(). Could
>> we do something like this:
>>
>> (a) implement the basic "load with exceptions" as __get_with_exception()
>> (b) #define get_kernel_stalepointer() __get_with_exception
>> (c) make "__get_user()" be "stac(); __get_with_exception(); clac()"
>
> Will try.
>
> The only possible complication there might be the way we don't recover
> the error code in the _ex() variants, that's actually a pretty
> important aspect to making this zero cost.

Yeah. You may be right. What I would really want is that "asm goto"
with an output register, but gcc doesn't do that. Then we could
improve on the whole try/catch thing too, so that it would just jump
to the catch..

>> #ifdef CONFIG_DEBUG_PAGEALLOC
>> #define get_kernel_stalepointer(x,ptr) ((x)=READ_ONCE(*(ptr)), 0)
>> #else
>> #define get_kernel_stalepointer(x,ptr) __get_with_exception(x,ptr)
>> #endif
>
> I guess you meant that to be the other way around?

Yes I did.

Linus