]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
VMCI: Use set_page_dirty_lock() when unregistering guest memory
authorJorgen Hansen <jhansen@vmware.com>
Wed, 20 Jan 2021 16:32:40 +0000 (08:32 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 4 Mar 2021 09:26:36 +0000 (10:26 +0100)
[ Upstream commit 5a16c535409f8dcb7568e20737309e3027ae3e49 ]

When the VMCI host support releases guest memory in the case where
the VM was killed, the pinned guest pages aren't locked. Use
set_page_dirty_lock() instead of set_page_dirty().

Testing done: Killed VM while having an active VMCI based vSocket
connection and observed warning from ext4. With this fix, no
warning was observed. Ran various vSocket tests without issues.

Fixes: 06164d2b72aa ("VMCI: queue pairs implementation.")
Reviewed-by: Vishnu Dasa <vdasa@vmware.com>
Signed-off-by: Jorgen Hansen <jhansen@vmware.com>
Link: https://lore.kernel.org/r/1611160360-30299-1-git-send-email-jhansen@vmware.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/misc/vmw_vmci/vmci_queue_pair.c

index c49065887e8f501e2eb48733b2d9072b67de4f0b..df6b19c4c49b5b179c1701c844a677fa4594f2d2 100644 (file)
@@ -630,7 +630,7 @@ static void qp_release_pages(struct page **pages,
 
        for (i = 0; i < num_pages; i++) {
                if (dirty)
-                       set_page_dirty(pages[i]);
+                       set_page_dirty_lock(pages[i]);
 
                put_page(pages[i]);
                pages[i] = NULL;