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

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

diff --git a/queue-4.9/kvm-arm-arm64-vgic-its-preserve-the-revious-read-from-the-pending-table.patch b/queue-4.9/kvm-arm-arm64-vgic-its-preserve-the-revious-read-from-the-pending-table.patch
new file mode 100644 (file)
index 0000000..61cd58c
--- /dev/null
@@ -0,0 +1,46 @@
+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")
+Cc: stable@vger.kernel.org # 4.8
+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
+@@ -322,6 +322,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->kvm, &intids);
+       if (nr_irqs < 0)
+@@ -329,7 +330,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 add074afc05867705dd8fc391a349405812b5b4c..8e6aff427c6eab4030024848b10b25376863081f 100644 (file)
@@ -18,3 +18,4 @@ ipmi-stop-timers-before-cleaning-up-the-module.patch
 s390-always-save-and-restore-all-registers-on-context-switch.patch
 usb-gadget-ffs-forbid-usb_ep_alloc_request-from-sleeping.patch
 fix-kcm_clone.patch
+kvm-arm-arm64-vgic-its-preserve-the-revious-read-from-the-pending-table.patch