]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 14 Dec 2017 21:16:12 +0000 (22:16 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 14 Dec 2017 21:16:12 +0000 (22:16 +0100)
added patches:
kvm-arm-arm64-vgic-its-preserve-the-revious-read-from-the-pending-table.patch

queue-4.14/kvm-arm-arm64-vgic-its-preserve-the-revious-read-from-the-pending-table.patch [new file with mode: 0644]
queue-4.14/series

diff --git a/queue-4.14/kvm-arm-arm64-vgic-its-preserve-the-revious-read-from-the-pending-table.patch b/queue-4.14/kvm-arm-arm64-vgic-its-preserve-the-revious-read-from-the-pending-table.patch
new file mode 100644 (file)
index 0000000..95e0faf
--- /dev/null
@@ -0,0 +1,45 @@
+From 64afe6e9eb4841f35317da4393de21a047a883b3 Mon Sep 17 00:00:00 2001
+From: Marc Zyngier <marc.zyngier@arm.com>
+Date: Thu, 16 Nov 2017 17:58:17 +0000
+Subject: KVM: arm/arm64: vgic-its: Preserve the revious read from the pending table
+
+From: Marc Zyngier <marc.zyngier@arm.com>
+
+commit 64afe6e9eb4841f35317da4393de21a047a883b3 upstream.
+
+The current pending table parsing code assumes that we keep the
+previous read of the pending bits, but keep that variable in
+the current block, making sure it is discarded on each loop.
+
+We end-up using whatever is on the stack. Who knows, it might
+just be the right thing...
+
+Fixes: 33d3bc9556a7d ("KVM: arm64: vgic-its: Read initial LPI pending table")
+Reported-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
+Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
+Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
+Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ virt/kvm/arm/vgic/vgic-its.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/virt/kvm/arm/vgic/vgic-its.c
++++ b/virt/kvm/arm/vgic/vgic-its.c
+@@ -393,6 +393,7 @@ static int its_sync_lpi_pending_table(st
+       int ret = 0;
+       u32 *intids;
+       int nr_irqs, i;
++      u8 pendmask;
+       nr_irqs = vgic_copy_lpi_list(vcpu, &intids);
+       if (nr_irqs < 0)
+@@ -400,7 +401,6 @@ static int its_sync_lpi_pending_table(st
+       for (i = 0; i < nr_irqs; i++) {
+               int byte_offset, bit_nr;
+-              u8 pendmask;
+               byte_offset = intids[i] / BITS_PER_BYTE;
+               bit_nr = intids[i] % BITS_PER_BYTE;
index 3f3411ccf13aab9d4a59b26d8a15be96ab4939c9..0ddf436b89ed1e038ce224b8203d3826885c11cb 100644 (file)
@@ -35,3 +35,4 @@ ipmi-stop-timers-before-cleaning-up-the-module.patch
 usb-gadget-ffs-forbid-usb_ep_alloc_request-from-sleeping.patch
 fcntl-don-t-cap-l_start-and-l_end-values-for-f_getlk64-in-compat-syscall.patch
 fix-kcm_clone.patch
+kvm-arm-arm64-vgic-its-preserve-the-revious-read-from-the-pending-table.patch