stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Paul Mackerras <paulus@ozlabs.org>,
	Michael Ellerman <mpe@ellerman.id.au>
Subject: [PATCH 5.3 021/148] powerpc/xive: Implement get_irqchip_state method for XIVE to fix shutdown race
Date: Thu, 10 Oct 2019 10:34:42 +0200	[thread overview]
Message-ID: <20191010083612.391515212@linuxfoundation.org> (raw)
In-Reply-To: <20191010083609.660878383@linuxfoundation.org>

From: Paul Mackerras <paulus@ozlabs.org>

commit da15c03b047dca891d37b9f4ef9ca14d84a6484f upstream.

Testing has revealed the existence of a race condition where a XIVE
interrupt being shut down can be in one of the XIVE interrupt queues
(of which there are up to 8 per CPU, one for each priority) at the
point where free_irq() is called.  If this happens, can return an
interrupt number which has been shut down.  This can lead to various
symptoms:

- irq_to_desc(irq) can be NULL.  In this case, no end-of-interrupt
  function gets called, resulting in the CPU's elevated interrupt
  priority (numerically lowered CPPR) never gets reset.  That then
  means that the CPU stops processing interrupts, causing device
  timeouts and other errors in various device drivers.

- The irq descriptor or related data structures can be in the process
  of being freed as the interrupt code is using them.  This typically
  leads to crashes due to bad pointer dereferences.

This race is basically what commit 62e0468650c3 ("genirq: Add optional
hardware synchronization for shutdown", 2019-06-28) is intended to
fix, given a get_irqchip_state() method for the interrupt controller
being used.  It works by polling the interrupt controller when an
interrupt is being freed until the controller says it is not pending.

With XIVE, the PQ bits of the interrupt source indicate the state of
the interrupt source, and in particular the P bit goes from 0 to 1 at
the point where the hardware writes an entry into the interrupt queue
that this interrupt is directed towards.  Normally, the code will then
process the interrupt and do an end-of-interrupt (EOI) operation which
will reset PQ to 00 (assuming another interrupt hasn't been generated
in the meantime).  However, there are situations where the code resets
P even though a queue entry exists (for example, by setting PQ to 01,
which disables the interrupt source), and also situations where the
code leaves P at 1 after removing the queue entry (for example, this
is done for escalation interrupts so they cannot fire again until
they are explicitly re-enabled).

The code already has a 'saved_p' flag for the interrupt source which
indicates that a queue entry exists, although it isn't maintained
consistently.  This patch adds a 'stale_p' flag to indicate that
P has been left at 1 after processing a queue entry, and adds code
to set and clear saved_p and stale_p as necessary to maintain a
consistent indication of whether a queue entry may or may not exist.

With this, we can implement xive_get_irqchip_state() by looking at
stale_p, saved_p and the ESB PQ bits for the interrupt.

There is some additional code to handle escalation interrupts
properly; because they are enabled and disabled in KVM assembly code,
which does not have access to the xive_irq_data struct for the
escalation interrupt.  Hence, stale_p may be incorrect when the
escalation interrupt is freed in kvmppc_xive_{,native_}cleanup_vcpu().
Fortunately, we can fix it up by looking at vcpu->arch.xive_esc_on,
with some careful attention to barriers in order to ensure the correct
result if xive_esc_irq() races with kvmppc_xive_cleanup_vcpu().

Finally, this adds code to make noise on the console (pr_crit and
WARN_ON(1)) if we find an interrupt queue entry for an interrupt
which does not have a descriptor.  While this won't catch the race
reliably, if it does get triggered it will be an indication that
the race is occurring and needs to be debugged.

Fixes: 243e25112d06 ("powerpc/xive: Native exploitation of the XIVE interrupt controller")
Cc: stable@vger.kernel.org # v4.12+
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20190813100648.GE9567@blackberry
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/include/asm/xive.h       |    8 +++
 arch/powerpc/kvm/book3s_xive.c        |   31 ++++++++++++
 arch/powerpc/kvm/book3s_xive.h        |    2 
 arch/powerpc/kvm/book3s_xive_native.c |    3 +
 arch/powerpc/sysdev/xive/common.c     |   87 +++++++++++++++++++++++++---------
 5 files changed, 108 insertions(+), 23 deletions(-)

--- a/arch/powerpc/include/asm/xive.h
+++ b/arch/powerpc/include/asm/xive.h
@@ -46,7 +46,15 @@ struct xive_irq_data {
 
 	/* Setup/used by frontend */
 	int target;
+	/*
+	 * saved_p means that there is a queue entry for this interrupt
+	 * in some CPU's queue (not including guest vcpu queues), even
+	 * if P is not set in the source ESB.
+	 * stale_p means that there is no queue entry for this interrupt
+	 * in some CPU's queue, even if P is set in the source ESB.
+	 */
 	bool saved_p;
+	bool stale_p;
 };
 #define XIVE_IRQ_FLAG_STORE_EOI	0x01
 #define XIVE_IRQ_FLAG_LSI	0x02
--- a/arch/powerpc/kvm/book3s_xive.c
+++ b/arch/powerpc/kvm/book3s_xive.c
@@ -166,6 +166,9 @@ static irqreturn_t xive_esc_irq(int irq,
 	 */
 	vcpu->arch.xive_esc_on = false;
 
+	/* This orders xive_esc_on = false vs. subsequent stale_p = true */
+	smp_wmb();	/* goes with smp_mb() in cleanup_single_escalation */
+
 	return IRQ_HANDLED;
 }
 
@@ -1119,6 +1122,31 @@ void kvmppc_xive_disable_vcpu_interrupts
 	vcpu->arch.xive_esc_raddr = 0;
 }
 
+/*
+ * In single escalation mode, the escalation interrupt is marked so
+ * that EOI doesn't re-enable it, but just sets the stale_p flag to
+ * indicate that the P bit has already been dealt with.  However, the
+ * assembly code that enters the guest sets PQ to 00 without clearing
+ * stale_p (because it has no easy way to address it).  Hence we have
+ * to adjust stale_p before shutting down the interrupt.
+ */
+void xive_cleanup_single_escalation(struct kvm_vcpu *vcpu,
+				    struct kvmppc_xive_vcpu *xc, int irq)
+{
+	struct irq_data *d = irq_get_irq_data(irq);
+	struct xive_irq_data *xd = irq_data_get_irq_handler_data(d);
+
+	/*
+	 * This slightly odd sequence gives the right result
+	 * (i.e. stale_p set if xive_esc_on is false) even if
+	 * we race with xive_esc_irq() and xive_irq_eoi().
+	 */
+	xd->stale_p = false;
+	smp_mb();		/* paired with smb_wmb in xive_esc_irq */
+	if (!vcpu->arch.xive_esc_on)
+		xd->stale_p = true;
+}
+
 void kvmppc_xive_cleanup_vcpu(struct kvm_vcpu *vcpu)
 {
 	struct kvmppc_xive_vcpu *xc = vcpu->arch.xive_vcpu;
@@ -1143,6 +1171,9 @@ void kvmppc_xive_cleanup_vcpu(struct kvm
 	/* Free escalations */
 	for (i = 0; i < KVMPPC_XIVE_Q_COUNT; i++) {
 		if (xc->esc_virq[i]) {
+			if (xc->xive->single_escalation)
+				xive_cleanup_single_escalation(vcpu, xc,
+							xc->esc_virq[i]);
 			free_irq(xc->esc_virq[i], vcpu);
 			irq_dispose_mapping(xc->esc_virq[i]);
 			kfree(xc->esc_virq_names[i]);
--- a/arch/powerpc/kvm/book3s_xive.h
+++ b/arch/powerpc/kvm/book3s_xive.h
@@ -282,6 +282,8 @@ int kvmppc_xive_select_target(struct kvm
 int kvmppc_xive_attach_escalation(struct kvm_vcpu *vcpu, u8 prio,
 				  bool single_escalation);
 struct kvmppc_xive *kvmppc_xive_get_device(struct kvm *kvm, u32 type);
+void xive_cleanup_single_escalation(struct kvm_vcpu *vcpu,
+				    struct kvmppc_xive_vcpu *xc, int irq);
 
 #endif /* CONFIG_KVM_XICS */
 #endif /* _KVM_PPC_BOOK3S_XICS_H */
--- a/arch/powerpc/kvm/book3s_xive_native.c
+++ b/arch/powerpc/kvm/book3s_xive_native.c
@@ -71,6 +71,9 @@ void kvmppc_xive_native_cleanup_vcpu(str
 	for (i = 0; i < KVMPPC_XIVE_Q_COUNT; i++) {
 		/* Free the escalation irq */
 		if (xc->esc_virq[i]) {
+			if (xc->xive->single_escalation)
+				xive_cleanup_single_escalation(vcpu, xc,
+							xc->esc_virq[i]);
 			free_irq(xc->esc_virq[i], vcpu);
 			irq_dispose_mapping(xc->esc_virq[i]);
 			kfree(xc->esc_virq_names[i]);
--- a/arch/powerpc/sysdev/xive/common.c
+++ b/arch/powerpc/sysdev/xive/common.c
@@ -135,7 +135,7 @@ static u32 xive_read_eq(struct xive_q *q
 static u32 xive_scan_interrupts(struct xive_cpu *xc, bool just_peek)
 {
 	u32 irq = 0;
-	u8 prio;
+	u8 prio = 0;
 
 	/* Find highest pending priority */
 	while (xc->pending_prio != 0) {
@@ -148,8 +148,19 @@ static u32 xive_scan_interrupts(struct x
 		irq = xive_read_eq(&xc->queue[prio], just_peek);
 
 		/* Found something ? That's it */
-		if (irq)
-			break;
+		if (irq) {
+			if (just_peek || irq_to_desc(irq))
+				break;
+			/*
+			 * We should never get here; if we do then we must
+			 * have failed to synchronize the interrupt properly
+			 * when shutting it down.
+			 */
+			pr_crit("xive: got interrupt %d without descriptor, dropping\n",
+				irq);
+			WARN_ON(1);
+			continue;
+		}
 
 		/* Clear pending bits */
 		xc->pending_prio &= ~(1 << prio);
@@ -307,6 +318,7 @@ static void xive_do_queue_eoi(struct xiv
  */
 static void xive_do_source_eoi(u32 hw_irq, struct xive_irq_data *xd)
 {
+	xd->stale_p = false;
 	/* If the XIVE supports the new "store EOI facility, use it */
 	if (xd->flags & XIVE_IRQ_FLAG_STORE_EOI)
 		xive_esb_write(xd, XIVE_ESB_STORE_EOI, 0);
@@ -350,7 +362,7 @@ static void xive_do_source_eoi(u32 hw_ir
 	}
 }
 
-/* irq_chip eoi callback */
+/* irq_chip eoi callback, called with irq descriptor lock held */
 static void xive_irq_eoi(struct irq_data *d)
 {
 	struct xive_irq_data *xd = irq_data_get_irq_handler_data(d);
@@ -366,6 +378,8 @@ static void xive_irq_eoi(struct irq_data
 	if (!irqd_irq_disabled(d) && !irqd_is_forwarded_to_vcpu(d) &&
 	    !(xd->flags & XIVE_IRQ_NO_EOI))
 		xive_do_source_eoi(irqd_to_hwirq(d), xd);
+	else
+		xd->stale_p = true;
 
 	/*
 	 * Clear saved_p to indicate that it's no longer occupying
@@ -397,11 +411,16 @@ static void xive_do_source_set_mask(stru
 	 */
 	if (mask) {
 		val = xive_esb_read(xd, XIVE_ESB_SET_PQ_01);
-		xd->saved_p = !!(val & XIVE_ESB_VAL_P);
-	} else if (xd->saved_p)
+		if (!xd->stale_p && !!(val & XIVE_ESB_VAL_P))
+			xd->saved_p = true;
+		xd->stale_p = false;
+	} else if (xd->saved_p) {
 		xive_esb_read(xd, XIVE_ESB_SET_PQ_10);
-	else
+		xd->saved_p = false;
+	} else {
 		xive_esb_read(xd, XIVE_ESB_SET_PQ_00);
+		xd->stale_p = false;
+	}
 }
 
 /*
@@ -541,6 +560,8 @@ static unsigned int xive_irq_startup(str
 	unsigned int hw_irq = (unsigned int)irqd_to_hwirq(d);
 	int target, rc;
 
+	xd->saved_p = false;
+	xd->stale_p = false;
 	pr_devel("xive_irq_startup: irq %d [0x%x] data @%p\n",
 		 d->irq, hw_irq, d);
 
@@ -587,6 +608,7 @@ static unsigned int xive_irq_startup(str
 	return 0;
 }
 
+/* called with irq descriptor lock held */
 static void xive_irq_shutdown(struct irq_data *d)
 {
 	struct xive_irq_data *xd = irq_data_get_irq_handler_data(d);
@@ -602,16 +624,6 @@ static void xive_irq_shutdown(struct irq
 	xive_do_source_set_mask(xd, true);
 
 	/*
-	 * The above may have set saved_p. We clear it otherwise it
-	 * will prevent re-enabling later on. It is ok to forget the
-	 * fact that the interrupt might be in a queue because we are
-	 * accounting that already in xive_dec_target_count() and will
-	 * be re-routing it to a new queue with proper accounting when
-	 * it's started up again
-	 */
-	xd->saved_p = false;
-
-	/*
 	 * Mask the interrupt in HW in the IVT/EAS and set the number
 	 * to be the "bad" IRQ number
 	 */
@@ -797,6 +809,10 @@ static int xive_irq_retrigger(struct irq
 	return 1;
 }
 
+/*
+ * Caller holds the irq descriptor lock, so this won't be called
+ * concurrently with xive_get_irqchip_state on the same interrupt.
+ */
 static int xive_irq_set_vcpu_affinity(struct irq_data *d, void *state)
 {
 	struct xive_irq_data *xd = irq_data_get_irq_handler_data(d);
@@ -820,6 +836,10 @@ static int xive_irq_set_vcpu_affinity(st
 
 		/* Set it to PQ=10 state to prevent further sends */
 		pq = xive_esb_read(xd, XIVE_ESB_SET_PQ_10);
+		if (!xd->stale_p) {
+			xd->saved_p = !!(pq & XIVE_ESB_VAL_P);
+			xd->stale_p = !xd->saved_p;
+		}
 
 		/* No target ? nothing to do */
 		if (xd->target == XIVE_INVALID_TARGET) {
@@ -827,7 +847,7 @@ static int xive_irq_set_vcpu_affinity(st
 			 * An untargetted interrupt should have been
 			 * also masked at the source
 			 */
-			WARN_ON(pq & 2);
+			WARN_ON(xd->saved_p);
 
 			return 0;
 		}
@@ -847,9 +867,8 @@ static int xive_irq_set_vcpu_affinity(st
 		 * This saved_p is cleared by the host EOI, when we know
 		 * for sure the queue slot is no longer in use.
 		 */
-		if (pq & 2) {
-			pq = xive_esb_read(xd, XIVE_ESB_SET_PQ_11);
-			xd->saved_p = true;
+		if (xd->saved_p) {
+			xive_esb_read(xd, XIVE_ESB_SET_PQ_11);
 
 			/*
 			 * Sync the XIVE source HW to ensure the interrupt
@@ -862,8 +881,7 @@ static int xive_irq_set_vcpu_affinity(st
 			 */
 			if (xive_ops->sync_source)
 				xive_ops->sync_source(hw_irq);
-		} else
-			xd->saved_p = false;
+		}
 	} else {
 		irqd_clr_forwarded_to_vcpu(d);
 
@@ -914,6 +932,23 @@ static int xive_irq_set_vcpu_affinity(st
 	return 0;
 }
 
+/* Called with irq descriptor lock held. */
+static int xive_get_irqchip_state(struct irq_data *data,
+				  enum irqchip_irq_state which, bool *state)
+{
+	struct xive_irq_data *xd = irq_data_get_irq_handler_data(data);
+
+	switch (which) {
+	case IRQCHIP_STATE_ACTIVE:
+		*state = !xd->stale_p &&
+			 (xd->saved_p ||
+			  !!(xive_esb_read(xd, XIVE_ESB_GET) & XIVE_ESB_VAL_P));
+		return 0;
+	default:
+		return -EINVAL;
+	}
+}
+
 static struct irq_chip xive_irq_chip = {
 	.name = "XIVE-IRQ",
 	.irq_startup = xive_irq_startup,
@@ -925,6 +960,7 @@ static struct irq_chip xive_irq_chip = {
 	.irq_set_type = xive_irq_set_type,
 	.irq_retrigger = xive_irq_retrigger,
 	.irq_set_vcpu_affinity = xive_irq_set_vcpu_affinity,
+	.irq_get_irqchip_state = xive_get_irqchip_state,
 };
 
 bool is_xive_irq(struct irq_chip *chip)
@@ -1338,6 +1374,11 @@ static void xive_flush_cpu_queue(unsigne
 		xd = irq_desc_get_handler_data(desc);
 
 		/*
+		 * Clear saved_p to indicate that it's no longer pending
+		 */
+		xd->saved_p = false;
+
+		/*
 		 * For LSIs, we EOI, this will cause a resend if it's
 		 * still asserted. Otherwise do an MSI retrigger.
 		 */



  parent reply	other threads:[~2019-10-10  9:03 UTC|newest]

Thread overview: 164+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-10  8:34 [PATCH 5.3 000/148] 5.3.6-stable review Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 001/148] s390/process: avoid potential reading of freed stack Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 002/148] s390/sclp: Fix bit checked for has_sipl Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 003/148] KVM: s390: Test for bad access register and size at the start of S390_MEM_OP Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 004/148] s390/topology: avoid firing events before kobjs are created Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 005/148] s390/cio: avoid calling strlen on null pointer Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 006/148] s390/cio: exclude subchannels with no parent from pseudo check Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 007/148] s390/dasd: Fix error handling during online processing Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 008/148] Revert "s390/dasd: Add discard support for ESE volumes" Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 009/148] KVM: s390: fix __insn32_query() inline assembly Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 010/148] KVM: PPC: Book3S: Enable XIVE native capability only if OPAL has required functions Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 011/148] KVM: PPC: Book3S HV: XIVE: Free escalation interrupts before disabling the VP Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 012/148] KVM: PPC: Book3S HV: Dont push XIVE context when not using XIVE device Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 013/148] KVM: PPC: Book3S HV: Fix race in re-enabling XIVE escalation interrupts Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 014/148] KVM: PPC: Book3S HV: Check for MMU ready on piggybacked virtual cores Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 015/148] KVM: PPC: Book3S HV: Dont lose pending doorbell request on migration on P9 Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 016/148] KVM: X86: Fix userspace set invalid CR4 Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 017/148] nbd: fix max number of supported devs Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 018/148] PM / devfreq: tegra: Fix kHz to Hz conversion Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 019/148] ASoC: Define a set of DAPM pre/post-up events Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 020/148] ASoC: sgtl5000: Improve VAG power and mute control Greg Kroah-Hartman
2019-10-10  8:34 ` Greg Kroah-Hartman [this message]
2019-10-10  8:34 ` [PATCH 5.3 022/148] powerpc/mce: Fix MCE handling for huge pages Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 023/148] powerpc/mce: Schedule work from irq_work Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 024/148] powerpc/603: Fix handling of the DIRTY flag Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 025/148] powerpc/32s: Fix boot failure with DEBUG_PAGEALLOC without KASAN Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 026/148] powerpc/ptdump: Fix addresses display on PPC32 Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 027/148] powerpc/powernv: Restrict OPAL symbol map to only be readable by root Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 028/148] powerpc/pseries: Fix cpu_hotplug_lock acquisition in resize_hpt() Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 029/148] powerpc/powernv/ioda: Fix race in TCE level allocation Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 030/148] powerpc/kasan: Fix parallel loading of modules Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 031/148] powerpc/kasan: Fix shadow area set up for modules Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 032/148] powerpc/book3s64/mm: Dont do tlbie fixup for some hardware revisions Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 033/148] powerpc/book3s64/radix: Rename CPU_FTR_P9_TLBIE_BUG feature flag Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 034/148] powerpc/mm: Add a helper to select PAGE_KERNEL_RO or PAGE_READONLY Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 035/148] powerpc/mm: Fix an Oops in kasan_mmu_init() Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 036/148] powerpc/mm: Fixup tlbie vs mtpidr/mtlpidr ordering issue on POWER9 Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 037/148] can: mcp251x: mcp251x_hw_reset(): allow more time after a reset Greg Kroah-Hartman
2019-10-10  8:34 ` [PATCH 5.3 038/148] tools lib traceevent: Fix "robust" test of do_generate_dynamic_list_file Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 039/148] tools lib traceevent: Do not free tep->cmdlines in add_new_comm() on failure Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 040/148] crypto: qat - Silence smp_processor_id() warning Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 041/148] crypto: skcipher - Unmap pages after an external error Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 042/148] crypto: cavium/zip - Add missing single_release() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 043/148] crypto: caam/qi - fix error handling in ERN handler Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 044/148] crypto: caam - fix concurrency issue in givencrypt descriptor Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 045/148] crypto: ccree - account for TEE not ready to report Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 046/148] crypto: ccree - use the full crypt length value Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 047/148] MIPS: Treat Loongson Extensions as ASEs Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 048/148] power: supply: sbs-battery: use correct flags field Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 049/148] power: supply: sbs-battery: only return health when battery present Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 050/148] tracing: Make sure variable reference alias has correct var_ref_idx Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 051/148] usercopy: Avoid HIGHMEM pfn warning Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 052/148] timer: Read jiffies once when forwarding base clk Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 053/148] PCI: vmd: Fix config addressing when using bus offsets Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 054/148] PCI: hv: Avoid use of hv_pci_dev->pci_slot after freeing it Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 055/148] PCI: vmd: Fix shadow offsets to reflect spec changes Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 056/148] PCI: Restore Resizable BAR size bits correctly for 1MB BARs Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 057/148] selftests/tpm2: Add the missing TEST_FILES assignment Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 058/148] selftests: pidfd: Fix undefined reference to pthread_create() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 059/148] watchdog: imx2_wdt: fix min() calculation in imx2_wdt_set_timeout Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 061/148] perf stat: Fix a segmentation fault when using repeat forever Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 062/148] drm/i915/dp: Fix dsc bpp calculations, v5 Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 063/148] drm/atomic: Reject FLIP_ASYNC unconditionally Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 064/148] drm/atomic: Take the atomic toys away from X Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 065/148] drm: mali-dp: Mark expected switch fall-through Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 066/148] drm/omap: fix max fclk divider for omap36xx Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 067/148] drm/msm/dsi: Fix return value check for clk_get_parent Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 068/148] drm/nouveau/kms/nv50-: Dont create MSTMs for eDP connectors Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 069/148] drm/amd/powerplay: change metrics update period from 1ms to 100ms Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 070/148] drm/i915/gvt: update vgpu workload head pointer correctly Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 071/148] drm/i915/userptr: Acquire the page lock around set_page_dirty() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 072/148] drm/i915: to make vgpu ppgtt notificaiton as atomic operation Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 073/148] mac80211: keep BHs disabled while calling drv_tx_wake_queue() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 074/148] mmc: tegra: Implement ->set_dma_mask() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 075/148] mmc: sdhci: improve ADMA error reporting Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 076/148] mmc: sdhci-of-esdhc: set DMA snooping based on DMA coherence Greg Kroah-Hartman
2019-10-10  8:49   ` Russell King - ARM Linux admin
2019-10-10  9:10     ` Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 077/148] mmc: sdhci: Let drivers define their DMA mask Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 078/148] Revert "locking/pvqspinlock: Dont wait if vCPU is preempted" Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 079/148] libnvdimm/altmap: Track namespace boundaries in altmap Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 080/148] sched: Add __ASSEMBLY__ guards around struct clone_args Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 081/148] DTS: ARM: gta04: introduce legacy spi-cs-high to make display work again Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 082/148] xen/balloon: Set pages PageOffline() in balloon_add_region() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 083/148] xen/xenbus: fix self-deadlock after killing user process Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 084/148] ieee802154: atusb: fix use-after-free at disconnect Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 085/148] nl80211: validate beacon head Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 086/148] cfg80211: validate SSID/MBSSID element ordering assumption Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 087/148] cfg80211: initialize on-stack chandefs Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 088/148] drivers: thermal: qcom: tsens: Fix memory leak from qfprom read Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 089/148] ima: always return negative code for error Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 090/148] ima: fix freeing ongoing ahash_request Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 091/148] fs: nfs: Fix possible null-pointer dereferences in encode_attrs() Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 092/148] xprtrdma: Toggle XPRT_CONGESTED in xprtrdmas slot methods Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 093/148] xprtrdma: Send Queue size grows after a reconnect Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 094/148] 9p: Transport error uninitialized Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 095/148] 9p: avoid attaching writeback_fid on mmap with type PRIVATE Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 096/148] xen/pci: reserve MCFG areas earlier Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 097/148] fuse: fix request limit Greg Kroah-Hartman
2019-10-10  8:35 ` [PATCH 5.3 098/148] ceph: fix directories inode i_blkbits initialization Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 099/148] ceph: fetch cap_gen under spinlock in ceph_add_cap Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 100/148] ceph: reconnect connection if session hang in opening state Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 101/148] SUNRPC: RPC level errors should always set task->tk_rpc_status Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 102/148] watchdog: aspeed: Add support for AST2600 Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 103/148] netfilter: nf_tables: allow lookups in dynamic sets Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 104/148] drm/amdgpu: Fix KFD-related kernel oops on Hawaii Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 105/148] drm/amdgpu: Check for valid number of registers to read Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 106/148] perf probe: Fix to clear tev->nargs in clear_probe_trace_event() Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 107/148] pNFS: Ensure we do clear the return-on-close layout stateid on fatal errors Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 108/148] SUNRPC: Dont try to parse incomplete RPC messages Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 109/148] pwm: stm32-lp: Add check in case requested period cannot be achieved Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 110/148] selftests/seccomp: fix build on older kernels Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 111/148] x86/purgatory: Disable the stackleak GCC plugin for the purgatory Greg Kroah-Hartman
     [not found]   ` <BYAPR04MB62468F03E52BCE23B5CD1C91AA940@BYAPR04MB6246.namprd04.prod.outlook.com>
2019-10-10 23:32     ` Sasha Levin
2019-10-10  8:36 ` [PATCH 5.3 112/148] ntb: point to right memory window index Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 113/148] thermal: Fix use-after-free when unregistering thermal zone device Greg Kroah-Hartman
2019-11-14 13:17   ` Lukasz Luba
2019-11-14 13:54     ` Ido Schimmel
2019-11-14 15:05     ` Zhang Rui
2019-10-10  8:36 ` [PATCH 5.3 114/148] thermal_hwmon: Sanitize thermal_zone type Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 115/148] iommu/amd: Fix downgrading default page-sizes in alloc_pte() Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 116/148] libnvdimm/region: Initialize bad block for volatile namespaces Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 117/148] libnvdimm: Fix endian conversion issues Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 118/148] fuse: fix memleak in cuse_channel_open Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 119/148] libnvdimm/nfit_test: Fix acpi_handle redefinition Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 120/148] sched/membarrier: Call sync_core only before usermode for same mm Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 121/148] sched/membarrier: Fix private expedited registration check Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 122/148] sched/core: Fix migration to invalid CPU in __set_cpus_allowed_ptr() Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 123/148] perf build: Add detection of java-11-openjdk-devel package Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 124/148] include/trace/events/writeback.h: fix -Wstringop-truncation warnings Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 125/148] selftests/bpf: adjust strobemeta loop to satisfy latest clang Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 126/148] kernel/elfcore.c: include proper prototypes Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 127/148] libbpf: fix false uninitialized variable warning Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 128/148] blk-mq: move lockdep_assert_held() into elevator_exit Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 129/148] bpf: Fix bpf_event_output re-entry issue Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 130/148] net: dsa: microchip: Always set regmap stride to 1 Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 131/148] i2c: qcom-geni: Disable DMA processing on the Lenovo Yoga C630 Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 132/148] perf unwind: Fix libunwind build failure on i386 systems Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 133/148] mlxsw: spectrum_flower: Fail in case user specifies multiple mirror actions Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 134/148] nfp: abm: fix memory leak in nfp_abm_u32_knode_replace Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 135/148] drm/radeon: Bail earlier when radeon.cik_/si_support=0 is passed Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 136/148] Btrfs: fix selftests failure due to uninitialized i_mode in test inodes Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 137/148] KVM: nVMX: Fix consistency check on injected exception error code Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 138/148] tick: broadcast-hrtimer: Fix a race in bc_set_next Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 139/148] perf stat: Reset previous counts on repeat with interval Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 140/148] riscv: Avoid interrupts being erroneously enabled in handle_exception() Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 141/148] vfs: Fix EOVERFLOW testing in put_compat_statfs64 Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 142/148] coresight: etm4x: Use explicit barriers on enable/disable Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 143/148] staging: erofs: fix an error handling in erofs_readdir() Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 144/148] staging: erofs: some compressed cluster should be submitted for corrupted images Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 145/148] staging: erofs: add two missing erofs_workgroup_put " Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 146/148] staging: erofs: avoid endless loop of invalid lookback distance 0 Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 147/148] staging: erofs: detect potential multiref due to corrupted images Greg Kroah-Hartman
2019-10-10  8:36 ` [PATCH 5.3 148/148] libnvdimm: prevent nvdimm from requesting key when security is disabled Greg Kroah-Hartman
2019-10-10 14:41 ` [PATCH 5.3 000/148] 5.3.6-stable review kernelci.org bot
2019-10-10 17:09 ` Naresh Kamboju
2019-10-11  6:48   ` Greg Kroah-Hartman
2019-10-10 20:59 ` Didik Setiawan
2019-10-10 22:19 ` Guenter Roeck
2019-10-11  6:49   ` Greg Kroah-Hartman
2019-10-11  3:02 ` shuah
2019-10-11  6:47   ` Greg Kroah-Hartman
2019-10-11  8:33 ` Jon Hunter
2019-10-11  8:58   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191010083612.391515212@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@ozlabs.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).