From 5cc8e6724564b016f6a0391d0ac9d691d97e2c5f Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 14 Dec 2017 22:16:12 +0100 Subject: [PATCH] 4.14-stable patches added patches: kvm-arm-arm64-vgic-its-preserve-the-revious-read-from-the-pending-table.patch --- ...-revious-read-from-the-pending-table.patch | 45 +++++++++++++++++++ queue-4.14/series | 1 + 2 files changed, 46 insertions(+) create mode 100644 queue-4.14/kvm-arm-arm64-vgic-its-preserve-the-revious-read-from-the-pending-table.patch 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 index 00000000000..95e0faf6ab2 --- /dev/null +++ b/queue-4.14/kvm-arm-arm64-vgic-its-preserve-the-revious-read-from-the-pending-table.patch @@ -0,0 +1,45 @@ +From 64afe6e9eb4841f35317da4393de21a047a883b3 Mon Sep 17 00:00:00 2001 +From: Marc Zyngier +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 + +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 +Reviewed-by: Christoffer Dall +Signed-off-by: Marc Zyngier +Signed-off-by: Christoffer Dall +Signed-off-by: Greg Kroah-Hartman + +--- + 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; diff --git a/queue-4.14/series b/queue-4.14/series index 3f3411ccf13..0ddf436b89e 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -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 -- 2.47.3