On Fri, 2 Mar 2018 18:43:43 +0100 Andrea Arcangeli <aarcange@xxxxxxxxxx> wrote: > KVM is hanging during postcopy live migration with userfaultfd because > get_user_pages_unlocked is not capable to handle FOLL_NOWAIT. > > Earlier FOLL_NOWAIT was only ever passed to get_user_pages. > > Specifically faultin_page (the callee of get_user_pages_unlocked > caller) doesn't know that if FAULT_FLAG_RETRY_NOWAIT was set in the > page fault flags, when VM_FAULT_RETRY is returned, the mmap_sem wasn't > actually released (even if nonblocking is not NULL). So it sets > *nonblocking to zero and the caller won't release the mmap_sem > thinking it was already released, but it wasn't because of > FOLL_NOWAIT. > > Reported-by: Dr. David Alan Gilbert <dgilbert@xxxxxxxxxx> > Tested-by: Dr. David Alan Gilbert <dgilbert@xxxxxxxxxx> > Signed-off-by: Andrea Arcangeli <aarcange@xxxxxxxxxx> I added Fixes: ce53053ce378c ("kvm: switch get_user_page_nowait() to get_user_pages_unlocked()") Cc: <stable@xxxxxxxxxxxxxxx> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>