On Mon, Sep 03, 2018 at 04:33:12PM -0700, Andrew Morton wrote: > On Fri, 31 Aug 2018 17:48:48 -0400 Andrea Arcangeli <aarcange@xxxxxxxxxx> wrote: > > > get_mempolicy(MPOL_F_NODE|MPOL_F_ADDR) called a get_user_pages that > > would not be waiting for userfaults before failing and it would hit on > > a SIGBUS instead. Using get_user_pages_locked/unlocked instead will > > allow get_mempolicy to allow userfaults to resolve the fault and fill > > the hole, before grabbing the node id of the page. > > What is the userspace visible impact of this change? > If the user calls get_mempolicy() with MPOL_F_ADDR | MPOL_F_NODE for an address inside an area managed by uffd and there is no page at that address, the page allocation from within get_mempolicy() will fail because get_user_pages() does not allow for page fault retry required for uffd; the user will get SIGBUS. With this patch, the page fault will be resolved by the uffd and the get_mempolicy() will continue normally. -- Sincerely yours, Mike.