Re: [PATCH RFC 01/15] uaccess: count pagefault_disable() levels in pagefault_disabled

From: Peter Zijlstra
Date: Thu May 07 2015 - 07:52:00 EST


On Thu, May 07, 2015 at 01:40:30PM +0200, David Hildenbrand wrote:
> But anyhow, opinions seem to differ how to best handle that whole stuff.
>
> I think a separate counter just makes sense, as we are dealing with two
> different concepts and we don't want to lose the preempt_disable =^ NOP
> for !CONFIG_PREEMPT.
>
> I also think that
>
> pagefault_disable()
> rt = copy_from_user()
> pagefault_enable()
>
> is a valid use case.
>
> So any suggestions how to continue?


static inline bool __pagefault_disabled(void)
{
return current->pagefault_disabled;
}

static inline bool pagefault_disabled(void)
{
return in_atomic() || __pagefault_disabled();
}

And leave the preempt_disable() + pagefault_disable() for now. You're
right in that that is clearest.

If we ever get to the point where that really is an issue, I'll try and
be clever then :-)
--
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/