On Thu, Aug 11, 2016 at 01:35:00PM -0700, Linus Torvalds wrote: > The thing is, iov_iter_copy_from_user_atomic() doesn't itself enforce > non-blocking user accesses, it depends on the caller blocking page > faults. Huh? The very first thing it does is char *kaddr = kmap_atomic(page), *p = kaddr + offset; If _that_ does not disable pagefaults, we are very deep in shit. AFAICS, all instances of that sucker do disable those, including the non-highmem default (it's static inline void *kmap_atomic(struct page *page) { preempt_disable(); pagefault_disable(); return page_address(page); } )