> On Oct 19, 2018, at 12:44 AM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > On 18/10/2018 22:46, Andy Lutomirski wrote: >>> [0] drivers/usb/gadget/function/f_fs.c::ffs_user_copy_worker() >>> >>> Sebastian >> I think we need an entirely new API: >> >> user_mm_ctx_t ctx = user_mm_ctx_get(); >> >> ... >> >> use_user_mm_ctx(ctx); >> unuse_user_mm_ctx(ctx); >> >> ... >> >> user_mm_ctx_put(ctx); >> >> and ctx will store a copy of mm and PKRU. >> > > That looks like a good API in general. The ffs_user_copy_worker that > Sebastian mentioned seems to be used by AIO, in which case of course it > has to happen in a kernel thread. > > But while the API is good, deciding on the desired semantics is > "interesting". The submitting thread might be changing PKRU between the > time the I/O operation is submitted and the time it is completed, for > example. I think there’s only one sensible answer: capture PKRU at the time of submission.