]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - virt/kvm/async_pf.c
drm/i915/bxt: Broxton decoupled MMIO
[karo-tx-linux.git] / virt / kvm / async_pf.c
index f0d061f92674c674803720a0cadfdc04df8a4a0c..8035cc1eb9551ab58b2f454f9ff74546dd2ebdde 100644 (file)
@@ -79,7 +79,14 @@ static void async_pf_execute(struct work_struct *work)
 
        might_sleep();
 
-       get_user_pages_unlocked(NULL, mm, addr, 1, 1, 0, NULL);
+       /*
+        * This work is run asynchromously to the task which owns
+        * mm and might be done in another context, so we must
+        * use FOLL_REMOTE.
+        */
+       __get_user_pages_unlocked(NULL, mm, addr, 1, NULL,
+                       FOLL_WRITE | FOLL_REMOTE);
+
        kvm_async_page_present_sync(vcpu, apf);
 
        spin_lock(&vcpu->async_pf.lock);