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);
}
)

Reply via email to