Skip to contentSkip to conversation

KVM: arm64: Fix exclusive limit for IPA size

PATCH Applied Marc Zyngier 2 participants 5 messages Mar 15, 2021

Subsystems (2)
lore
Share & tools
lore

Marc Zyngier

author maintainer
#0 lore raw

PATCH 1/1 KVM: arm64: Fix exclusive limit for IPA size

Commit 262b003d059c6671601a19057e9fe1a5e7f23722 upstream.

When registering a memslot, we check the size and location of that memslot against the IPA size to ensure that we can provide guest access to the whole of the memory.

Unfortunately, this check rejects memslot that end-up at the exact limit of the addressing capability for a given IPA size. For example, it refuses the creation of a 2GB memslot at 0x8000000 with a 32bit IPA space.

Fix it by relaxing the check to accept a memslot reaching the limit of the IPA space.

Fixes c3058d5da222 ("arm/arm64: KVM: Ensure memslots are within KVM_PHYS_SIZE")
Cc [email protected] # 4.4, 4.9, 4.14, 4.19
---
 virt/kvm/arm/mmu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
virt/kvm/arm/mmu.c +1 -1
index 787f7329d1b7..11103b75c596 100644
@@ -2080,7 +2080,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
 	 * Prevent userspace from creating a memory region outside of the IPA
 	 * space addressable by the KVM guest IPA space.
 	 */
-	if (memslot->base_gfn + memslot->npages >=
+	if (memslot->base_gfn + memslot->npages >
 	    (KVM_PHYS_SIZE >> PAGE_SHIFT))
 		return -EFAULT;
 
Signature · 6 lines
2.29.2

_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
maintainer
#1 lore raw
Quoted 20 lines · Marc Zyngier

Commit 262b003d059c6671601a19057e9fe1a5e7f23722 upstream.

When registering a memslot, we check the size and location of that memslot against the IPA size to ensure that we can provide guest access to the whole of the memory.

Unfortunately, this check rejects memslot that end-up at the exact limit of the addressing capability for a given IPA size. For example, it refuses the creation of a 2GB memslot at 0x8000000 with a 32bit IPA space.

Fix it by relaxing the check to accept a memslot reaching the limit of the IPA space.

Fixes c3058d5da222 ("arm/arm64: KVM: Ensure memslots are within KVM_PHYS_SIZE")
Cc [email protected] # 4.4, 4.9, 4.14, 4.19
Quoted 3 lines
---
 virt/kvm/arm/mmu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

This file does not exist in 4.4.y or 4.9.y, so I can't apply it there :(

Queued up everywhere else, and also the other backports you sent, thanks.

gre gk-h
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

author maintainer
#2 lore raw
Quoted 25 lines · Greg KH
Quoted 20 lines · Marc Zyngier

Commit 262b003d059c6671601a19057e9fe1a5e7f23722 upstream.

When registering a memslot, we check the size and location of that memslot against the IPA size to ensure that we can provide guest access to the whole of the memory.

Unfortunately, this check rejects memslot that end-up at the exact limit of the addressing capability for a given IPA size. For example, it refuses the creation of a 2GB memslot at 0x8000000 with a 32bit IPA space.

Fix it by relaxing the check to accept a memslot reaching the limit of the IPA space.

Fixes c3058d5da222 ("arm/arm64: KVM: Ensure memslots are within KVM_PHYS_SIZE")
Cc [email protected] # 4.4, 4.9, 4.14, 4.19
Quoted 3 lines
---
 virt/kvm/arm/mmu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Quoted 1 line

This file does not exist in 4.4.y or 4.9.y, so I can't apply it there :(

Ah, git rename handling fixed that up for me, and I didn't pay attention to the resulting path... Sorry about that.

I'll resend the patch for 4.4 and 4.9

Thanks,

        M.
Signature · 5 lines
Jazz is not dead. It just smells funny...
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
maintainer Applied
#3 lore raw

Patch "KVM: arm64: Fix exclusive limit for IPA size" has been added to the 4.14-stable tree

In reply to Marc Zyngier

This is a note to let you know that I've just added the patch titled

KVM: arm64: Fix exclusive limit for IPA size

to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
kvm-arm64-fix-exclusive-limit-for-ipa-size.patch
and it can be found in the queue-4.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

From foo@baz Mon Mar 15 12:28:42 PM CET 2021
From: Marc Zyngier <[email protected]>
Date: Mon, 15 Mar 2021 11:08:33 +0000
Subject: KVM: arm64: Fix exclusive limit for IPA size
To: [email protected]
Cc: [email protected], [email protected], Eric Auger <[email protected]>, [email protected], Andrew Jones <[email protected]>
Message-ID: <[email protected]>

From: Marc Zyngier <[email protected]>

Commit 262b003d059c6671601a19057e9fe1a5e7f23722 upstream.

When registering a memslot, we check the size and location of that memslot against the IPA size to ensure that we can provide guest access to the whole of the memory.

Unfortunately, this check rejects memslot that end-up at the exact limit of the addressing capability for a given IPA size. For example, it refuses the creation of a 2GB memslot at 0x8000000 with a 32bit IPA space.

Fix it by relaxing the check to accept a memslot reaching the limit of the IPA space.

Fixes c3058d5da222 ("arm/arm64: KVM: Ensure memslots are within KVM_PHYS_SIZE")
Cc [email protected] # 4.4, 4.9, 4.14, 4.19
---
 virt/kvm/arm/mmu.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
virt/kvm/arm/mmu.c +1 -1
@@ -1870,7 +1870,7 @@ int kvm_arch_prepare_memory_region(struc
 	 * Prevent userspace from creating a memory region outside of the IPA
 	 * space addressable by the KVM guest IPA space.
 	 */
-	if (memslot->base_gfn + memslot->npages >=
+	if (memslot->base_gfn + memslot->npages >
 	    (KVM_PHYS_SIZE >> PAGE_SHIFT))
 		return -EFAULT;
 

Patches currently in stable-queue which might be from [email protected] are

queue-4.14/kvm-arm64-fix-exclusive-limit-for-ipa-size.patch
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

maintainer Applied
#4 lore raw

Patch "KVM: arm64: Fix exclusive limit for IPA size" has been added to the 4.19-stable tree

In reply to Marc Zyngier

This is a note to let you know that I've just added the patch titled

KVM: arm64: Fix exclusive limit for IPA size

to the 4.19-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
kvm-arm64-fix-exclusive-limit-for-ipa-size.patch
and it can be found in the queue-4.19 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

From foo@baz Mon Mar 15 12:28:26 PM CET 2021
From: Marc Zyngier <[email protected]>
Date: Mon, 15 Mar 2021 11:08:33 +0000
Subject: KVM: arm64: Fix exclusive limit for IPA size
To: [email protected]
Cc: [email protected], [email protected], Eric Auger <[email protected]>, [email protected], Andrew Jones <[email protected]>
Message-ID: <[email protected]>

From: Marc Zyngier <[email protected]>

Commit 262b003d059c6671601a19057e9fe1a5e7f23722 upstream.

When registering a memslot, we check the size and location of that memslot against the IPA size to ensure that we can provide guest access to the whole of the memory.

Unfortunately, this check rejects memslot that end-up at the exact limit of the addressing capability for a given IPA size. For example, it refuses the creation of a 2GB memslot at 0x8000000 with a 32bit IPA space.

Fix it by relaxing the check to accept a memslot reaching the limit of the IPA space.

Fixes c3058d5da222 ("arm/arm64: KVM: Ensure memslots are within KVM_PHYS_SIZE")
Cc [email protected] # 4.4, 4.9, 4.14, 4.19
---
 virt/kvm/arm/mmu.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
virt/kvm/arm/mmu.c +1 -1
@@ -2080,7 +2080,7 @@ int kvm_arch_prepare_memory_region(struc
 	 * Prevent userspace from creating a memory region outside of the IPA
 	 * space addressable by the KVM guest IPA space.
 	 */
-	if (memslot->base_gfn + memslot->npages >=
+	if (memslot->base_gfn + memslot->npages >
 	    (KVM_PHYS_SIZE >> PAGE_SHIFT))
 		return -EFAULT;
 

Patches currently in stable-queue which might be from [email protected] are

queue-4.19/kvm-arm64-fix-exclusive-limit-for-ipa-size.patch
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm