On Wed, May 12, 2021 at 08:04:33AM +0000, David Laight wrote: > That can't be right at all. > __put/get_user() are only valid on user addresses and will try to > fault in a missing page - so can sleep. Yes, in general these functions can sleep, but not in this context. They are called in atomic context and the page-fault handler will notice that and goes down the __bad_area_nosemaphore() path and only do the fixup. I also thought about adding page_fault_disable()/page_fault_enable() calls, but being in atomic context is enough according to the faulthandler_disabled() implementation. This is exactly what is needed here. All I want to know is whether a fault happened or not, the page-fault handler must not try to fix the fault in any way. If a fault happens it is later fixed up in vc_forward_exception(). > At best this is abused the calls. Yes, but that is only due to the naming of these functions. In this case they do exactly what is needed. Regards, Joerg