linux-kernel.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, Niklas Schnelle <schnelle@linux.ibm.com>,
	Sven Schnelle <svens@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>
Subject: [PATCH 5.6 105/126] s390/pci: Fix s390_mmio_read/write with MIO
Date: Tue, 26 May 2020 20:54:02 +0200	[thread overview]
Message-ID: <20200526183946.480389842@linuxfoundation.org> (raw)
In-Reply-To: <20200526183937.471379031@linuxfoundation.org>

From: Niklas Schnelle <schnelle@linux.ibm.com>

commit f058599e22d59e594e5aae1dc10560568d8f4a8b upstream.

The s390_mmio_read/write syscalls are currently broken when running with
MIO.

The new pcistb_mio/pcstg_mio/pcilg_mio instructions are executed
similiarly to normal load/store instructions and do address translation
in the current address space. That means inside the kernel they are
aware of mappings into kernel address space while outside the kernel
they use user space mappings (usually created through mmap'ing a PCI
device file).

Now when existing user space applications use the s390_pci_mmio_write
and s390_pci_mmio_read syscalls, they pass I/O addresses that are mapped
into user space so as to be usable with the new instructions without
needing a syscall. Accessing these addresses with the old instructions
as done currently leads to a kernel panic.

Also, for such a user space mapping there may not exist an equivalent
kernel space mapping which means we can't just use the new instructions
in kernel space.

Instead of replicating user mappings in the kernel which then might
collide with other mappings, we can conceptually execute the new
instructions as if executed by the user space application using the
secondary address space. This even allows us to directly store to the
user pointer without the need for copy_to/from_user().

Cc: stable@vger.kernel.org
Fixes: 71ba41c9b1d9 ("s390/pci: provide support for MIO instructions")
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/s390/include/asm/pci_io.h |   10 +
 arch/s390/pci/pci_mmio.c       |  213 ++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 219 insertions(+), 4 deletions(-)

--- a/arch/s390/include/asm/pci_io.h
+++ b/arch/s390/include/asm/pci_io.h
@@ -8,6 +8,10 @@
 #include <linux/slab.h>
 #include <asm/pci_insn.h>
 
+/* I/O size constraints */
+#define ZPCI_MAX_READ_SIZE	8
+#define ZPCI_MAX_WRITE_SIZE	128
+
 /* I/O Map */
 #define ZPCI_IOMAP_SHIFT		48
 #define ZPCI_IOMAP_ADDR_BASE		0x8000000000000000UL
@@ -140,7 +144,8 @@ static inline int zpci_memcpy_fromio(voi
 
 	while (n > 0) {
 		size = zpci_get_max_write_size((u64 __force) src,
-					       (u64) dst, n, 8);
+					       (u64) dst, n,
+					       ZPCI_MAX_READ_SIZE);
 		rc = zpci_read_single(dst, src, size);
 		if (rc)
 			break;
@@ -161,7 +166,8 @@ static inline int zpci_memcpy_toio(volat
 
 	while (n > 0) {
 		size = zpci_get_max_write_size((u64 __force) dst,
-					       (u64) src, n, 128);
+					       (u64) src, n,
+					       ZPCI_MAX_WRITE_SIZE);
 		if (size > 8) /* main path */
 			rc = zpci_write_block(dst, src, size);
 		else
--- a/arch/s390/pci/pci_mmio.c
+++ b/arch/s390/pci/pci_mmio.c
@@ -11,6 +11,113 @@
 #include <linux/mm.h>
 #include <linux/errno.h>
 #include <linux/pci.h>
+#include <asm/pci_io.h>
+#include <asm/pci_debug.h>
+
+static inline void zpci_err_mmio(u8 cc, u8 status, u64 offset)
+{
+	struct {
+		u64 offset;
+		u8 cc;
+		u8 status;
+	} data = {offset, cc, status};
+
+	zpci_err_hex(&data, sizeof(data));
+}
+
+static inline int __pcistb_mio_inuser(
+		void __iomem *ioaddr, const void __user *src,
+		u64 len, u8 *status)
+{
+	int cc = -ENXIO;
+
+	asm volatile (
+		"       sacf 256\n"
+		"0:     .insn   rsy,0xeb00000000d4,%[len],%[ioaddr],%[src]\n"
+		"1:     ipm     %[cc]\n"
+		"       srl     %[cc],28\n"
+		"2:     sacf 768\n"
+		EX_TABLE(0b, 2b) EX_TABLE(1b, 2b)
+		: [cc] "+d" (cc), [len] "+d" (len)
+		: [ioaddr] "a" (ioaddr), [src] "Q" (*((u8 __force *)src))
+		: "cc", "memory");
+	*status = len >> 24 & 0xff;
+	return cc;
+}
+
+static inline int __pcistg_mio_inuser(
+		void __iomem *ioaddr, const void __user *src,
+		u64 ulen, u8 *status)
+{
+	register u64 addr asm("2") = (u64 __force) ioaddr;
+	register u64 len asm("3") = ulen;
+	int cc = -ENXIO;
+	u64 val = 0;
+	u64 cnt = ulen;
+	u8 tmp;
+
+	/*
+	 * copy 0 < @len <= 8 bytes from @src into the right most bytes of
+	 * a register, then store it to PCI at @ioaddr while in secondary
+	 * address space. pcistg then uses the user mappings.
+	 */
+	asm volatile (
+		"       sacf    256\n"
+		"0:     llgc    %[tmp],0(%[src])\n"
+		"       sllg    %[val],%[val],8\n"
+		"       aghi    %[src],1\n"
+		"       ogr     %[val],%[tmp]\n"
+		"       brctg   %[cnt],0b\n"
+		"1:     .insn   rre,0xb9d40000,%[val],%[ioaddr]\n"
+		"2:     ipm     %[cc]\n"
+		"       srl     %[cc],28\n"
+		"3:     sacf    768\n"
+		EX_TABLE(0b, 3b) EX_TABLE(1b, 3b) EX_TABLE(2b, 3b)
+		:
+		[src] "+a" (src), [cnt] "+d" (cnt),
+		[val] "+d" (val), [tmp] "=d" (tmp),
+		[len] "+d" (len), [cc] "+d" (cc),
+		[ioaddr] "+a" (addr)
+		:: "cc", "memory");
+	*status = len >> 24 & 0xff;
+
+	/* did we read everything from user memory? */
+	if (!cc && cnt != 0)
+		cc = -EFAULT;
+
+	return cc;
+}
+
+static inline int __memcpy_toio_inuser(void __iomem *dst,
+				   const void __user *src, size_t n)
+{
+	int size, rc = 0;
+	u8 status = 0;
+	mm_segment_t old_fs;
+
+	if (!src)
+		return -EINVAL;
+
+	old_fs = enable_sacf_uaccess();
+	while (n > 0) {
+		size = zpci_get_max_write_size((u64 __force) dst,
+					       (u64 __force) src, n,
+					       ZPCI_MAX_WRITE_SIZE);
+		if (size > 8) /* main path */
+			rc = __pcistb_mio_inuser(dst, src, size, &status);
+		else
+			rc = __pcistg_mio_inuser(dst, src, size, &status);
+		if (rc)
+			break;
+		src += size;
+		dst += size;
+		n -= size;
+	}
+	disable_sacf_uaccess(old_fs);
+	if (rc)
+		zpci_err_mmio(rc, status, (__force u64) dst);
+	return rc;
+}
 
 static long get_pfn(unsigned long user_addr, unsigned long access,
 		    unsigned long *pfn)
@@ -46,6 +153,20 @@ SYSCALL_DEFINE3(s390_pci_mmio_write, uns
 
 	if (length <= 0 || PAGE_SIZE - (mmio_addr & ~PAGE_MASK) < length)
 		return -EINVAL;
+
+	/*
+	 * Only support read access to MIO capable devices on a MIO enabled
+	 * system. Otherwise we would have to check for every address if it is
+	 * a special ZPCI_ADDR and we would have to do a get_pfn() which we
+	 * don't need for MIO capable devices.
+	 */
+	if (static_branch_likely(&have_mio)) {
+		ret = __memcpy_toio_inuser((void  __iomem *) mmio_addr,
+					user_buffer,
+					length);
+		return ret;
+	}
+
 	if (length > 64) {
 		buf = kmalloc(length, GFP_KERNEL);
 		if (!buf)
@@ -56,7 +177,8 @@ SYSCALL_DEFINE3(s390_pci_mmio_write, uns
 	ret = get_pfn(mmio_addr, VM_WRITE, &pfn);
 	if (ret)
 		goto out;
-	io_addr = (void __iomem *)((pfn << PAGE_SHIFT) | (mmio_addr & ~PAGE_MASK));
+	io_addr = (void __iomem *)((pfn << PAGE_SHIFT) |
+			(mmio_addr & ~PAGE_MASK));
 
 	ret = -EFAULT;
 	if ((unsigned long) io_addr < ZPCI_IOMAP_ADDR_BASE)
@@ -72,6 +194,78 @@ out:
 	return ret;
 }
 
+static inline int __pcilg_mio_inuser(
+		void __user *dst, const void __iomem *ioaddr,
+		u64 ulen, u8 *status)
+{
+	register u64 addr asm("2") = (u64 __force) ioaddr;
+	register u64 len asm("3") = ulen;
+	u64 cnt = ulen;
+	int shift = ulen * 8;
+	int cc = -ENXIO;
+	u64 val, tmp;
+
+	/*
+	 * read 0 < @len <= 8 bytes from the PCI memory mapped at @ioaddr (in
+	 * user space) into a register using pcilg then store these bytes at
+	 * user address @dst
+	 */
+	asm volatile (
+		"       sacf    256\n"
+		"0:     .insn   rre,0xb9d60000,%[val],%[ioaddr]\n"
+		"1:     ipm     %[cc]\n"
+		"       srl     %[cc],28\n"
+		"       ltr     %[cc],%[cc]\n"
+		"       jne     4f\n"
+		"2:     ahi     %[shift],-8\n"
+		"       srlg    %[tmp],%[val],0(%[shift])\n"
+		"3:     stc     %[tmp],0(%[dst])\n"
+		"       aghi    %[dst],1\n"
+		"       brctg   %[cnt],2b\n"
+		"4:     sacf    768\n"
+		EX_TABLE(0b, 4b) EX_TABLE(1b, 4b) EX_TABLE(3b, 4b)
+		:
+		[cc] "+d" (cc), [val] "=d" (val), [len] "+d" (len),
+		[dst] "+a" (dst), [cnt] "+d" (cnt), [tmp] "=d" (tmp),
+		[shift] "+d" (shift)
+		:
+		[ioaddr] "a" (addr)
+		: "cc", "memory");
+
+	/* did we write everything to the user space buffer? */
+	if (!cc && cnt != 0)
+		cc = -EFAULT;
+
+	*status = len >> 24 & 0xff;
+	return cc;
+}
+
+static inline int __memcpy_fromio_inuser(void __user *dst,
+				     const void __iomem *src,
+				     unsigned long n)
+{
+	int size, rc = 0;
+	u8 status;
+	mm_segment_t old_fs;
+
+	old_fs = enable_sacf_uaccess();
+	while (n > 0) {
+		size = zpci_get_max_write_size((u64 __force) src,
+					       (u64 __force) dst, n,
+					       ZPCI_MAX_READ_SIZE);
+		rc = __pcilg_mio_inuser(dst, src, size, &status);
+		if (rc)
+			break;
+		src += size;
+		dst += size;
+		n -= size;
+	}
+	disable_sacf_uaccess(old_fs);
+	if (rc)
+		zpci_err_mmio(rc, status, (__force u64) dst);
+	return rc;
+}
+
 SYSCALL_DEFINE3(s390_pci_mmio_read, unsigned long, mmio_addr,
 		void __user *, user_buffer, size_t, length)
 {
@@ -86,12 +280,27 @@ SYSCALL_DEFINE3(s390_pci_mmio_read, unsi
 
 	if (length <= 0 || PAGE_SIZE - (mmio_addr & ~PAGE_MASK) < length)
 		return -EINVAL;
+
+	/*
+	 * Only support write access to MIO capable devices on a MIO enabled
+	 * system. Otherwise we would have to check for every address if it is
+	 * a special ZPCI_ADDR and we would have to do a get_pfn() which we
+	 * don't need for MIO capable devices.
+	 */
+	if (static_branch_likely(&have_mio)) {
+		ret = __memcpy_fromio_inuser(
+				user_buffer, (const void __iomem *)mmio_addr,
+				length);
+		return ret;
+	}
+
 	if (length > 64) {
 		buf = kmalloc(length, GFP_KERNEL);
 		if (!buf)
 			return -ENOMEM;
-	} else
+	} else {
 		buf = local_buf;
+	}
 
 	ret = get_pfn(mmio_addr, VM_READ, &pfn);
 	if (ret)



  parent reply	other threads:[~2020-05-26 19:17 UTC|newest]

Thread overview: 141+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-26 18:52 [PATCH 5.6 000/126] 5.6.15-rc1 review Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 001/126] i2c: dev: Fix the race between the release of i2c_dev and cdev Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 002/126] ARC: [plat-hsdk]: fix USB regression Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 003/126] ima: Set file->f_mode instead of file->f_flags in ima_calc_file_hash() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 004/126] evm: Check also if *tfm is an error pointer in init_desc() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 005/126] ima: Fix return value of ima_write_policy() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 006/126] ovl: potential crash in ovl_fid_to_fh() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 007/126] ubifs: fix wrong use of crypto_shash_descsize() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 008/126] ACPI: EC: PM: Avoid flushing EC work when EC GPE is inactive Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 009/126] mtd: spinand: Propagate ECC information to the MTD structure Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 010/126] fix multiplication overflow in copy_fdtable() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 011/126] pipe: Fix pipe_full() test in opipe_prep() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 012/126] ubifs: remove broken lazytime support Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 013/126] i2c: fix missing pm_runtime_put_sync in i2c_device_probe Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 014/126] iommu/amd: Fix over-read of ACPI UID from IVRS table Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 015/126] iommu/amd: Fix get_acpihid_device_id() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 016/126] evm: Fix a small race in init_desc() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 017/126] i2c: mux: demux-pinctrl: Fix an error handling path in i2c_demux_pinctrl_probe() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 018/126] ubi: Fix seq_file usage in detailed_erase_block_info debugfs file Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 019/126] afs: Dont unlock fetched data pages until the op completes successfully Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 020/126] mtd: Fix mtd not registered due to nvmem name collision Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 021/126] iommu: Fix deferred domain attachment Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 022/126] kbuild: avoid concurrency issue in parallel building dtbs and dtbs_check Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 023/126] net: drop_monitor: use IS_REACHABLE() to guard net_dm_hw_report() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 024/126] gcc-common.h: Update for GCC 10 Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 025/126] HID: multitouch: add eGalaxTouch P80H84 support Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 026/126] HID: logitech: Add support for Logitech G11 extra keys Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 027/126] HID: alps: Add AUI1657 device ID Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 028/126] HID: alps: ALPS_1657 is too specific; use U1_UNICORN_LEGACY instead Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 029/126] scsi: qla2xxx: Fix hang when issuing nvme disconnect-all in NPIV Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 030/126] scsi: qla2xxx: Delete all sessions before unregister local nvme port Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 031/126] configfs: fix config_item refcnt leak in configfs_rmdir() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 032/126] vhost/vsock: fix packet delivery order to monitoring devices Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 033/126] aquantia: Fix the media type of AQC100 ethernet controller in the driver Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 034/126] component: Silence bind error on -EPROBE_DEFER Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 035/126] net/ena: Fix build warning in ena_xdp_set() Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 036/126] scsi: ibmvscsi: Fix WARN_ON during event pool release Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 037/126] HID: i2c-hid: reset Synaptics SYNA2393 on resume Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 038/126] ibmvnic: Skip fatal error reset after passive init Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 039/126] ftrace/selftest: make unresolved cases cause failure if --fail-unresolved set Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 040/126] selftests: fix kvm relocatable native/cross builds and installs Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 041/126] x86/apic: Move TSC deadline timer debug printk Greg Kroah-Hartman
2020-05-26 18:52 ` [PATCH 5.6 042/126] gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp() Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 043/126] HID: quirks: Add HID_QUIRK_NO_INIT_REPORTS quirk for Dell K12A keyboard-dock Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 044/126] ceph: fix double unlock in handle_cap_export() Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 045/126] stmmac: fix pointer check after utilization in stmmac_interrupt Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 046/126] USB: core: Fix misleading driver bug report Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 047/126] platform/x86: asus-nb-wmi: Do not load on Asus T100TA and T200TA Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 048/126] iommu/amd: Do not loop forever when trying to increase address space Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 049/126] iommu/amd: Call domain_flush_complete() in update_domain() Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 050/126] drm/amd/display: fix counter in wait_for_no_pipes_pending Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 051/126] drm/amd/display: Prevent dpcd reads with passive dongles Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 052/126] KVM: selftests: Fix build for evmcs.h Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 053/126] ARM: futex: Address build warning Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 054/126] tools/bootconfig: Fix resource leak in apply_xbc() Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 055/126] scripts/gdb: repair rb_first() and rb_last() Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 056/126] ALSA: hda/realtek - Add supported new mute Led for HP Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 057/126] ALSA: hda/realtek - Add HP new mute led supported for ALC236 Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 058/126] ALSA: hda/realtek: Add quirk for Samsung Notebook Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 059/126] ALSA: hda/realtek - Enable headset mic of ASUS GL503VM with ALC295 Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 060/126] ALSA: hda/realtek - Enable headset mic of ASUS UX550GE " Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 061/126] ALSA: hda/realtek: Enable headset mic of ASUS UX581LV " Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 062/126] bpf: Restrict bpf_probe_read{, str}() only to archs where they work Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 063/126] bpf: Add bpf_probe_read_{user, kernel}_str() to do_refine_retval_range Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 064/126] ALSA: iec1712: Initialize STDSP24 properly when using the model=staudio option Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 065/126] ALSA: pcm: fix incorrect hw_base increase Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 066/126] ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Xtreme Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 067/126] ALSA: hda/realtek - Add more fixup entries for Clevo machines Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 068/126] scsi: qla2xxx: Do not log message when reading port speed via sysfs Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 069/126] scsi: target: Put lun_ref at end of tmr processing Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 070/126] arm64: Fix PTRACE_SYSEMU semantics Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 071/126] powerpc/64s: Disable STRICT_KERNEL_RWX Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 072/126] drm/etnaviv: fix perfmon domain interation Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 073/126] pinctrl: qcom: Add affinity callbacks to msmgpio IRQ chip Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 074/126] apparmor: Fix use-after-free in aa_audit_rule_init Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 075/126] apparmor: fix potential label refcnt leak in aa_change_profile Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 076/126] apparmor: Fix aa_label refcnt leak in policy_update Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 077/126] dmaengine: tegra210-adma: Fix an error handling path in tegra_adma_probe() Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 078/126] drm/etnaviv: Fix a leak in submit_pin_objects() Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 079/126] dmaengine: dmatest: Restore default for channel Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 080/126] dmaengine: idxd: fix interrupt completion after unmasking Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 081/126] dmaengine: owl: Use correct lock in owl_dma_get_pchan() Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 082/126] vsprintf: dont obfuscate NULL and error pointers Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 083/126] drm/i915/gvt: Init DPLL/DDI vreg for virtual display instead of inheritance Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 084/126] drm/i915: Propagate error from completed fences Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 085/126] Revert "gfs2: Dont demote a glock until its revokes are written" Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 086/126] virtio-balloon: Revert "virtio-balloon: Switch back to OOM handler for VIRTIO_BALLOON_F_DEFLATE_ON_OOM" Greg Kroah-Hartman
2020-05-28  5:51   ` Jiri Slaby
2020-05-28  8:21     ` David Hildenbrand
2020-05-28 11:11       ` Sasha Levin
2020-05-28 11:24         ` Greg Kroah-Hartman
2020-05-31  9:18   ` Michael S. Tsirkin
2020-05-31 11:34     ` Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 087/126] Revert "driver core: platform: Initialize dma_parms for platform devices" Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 088/126] tools/bootconfig: Fix apply_xbc() to return zero on success Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 089/126] kbuild: Remove debug info from kallsyms linking Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 090/126] staging: iio: ad2s1210: Fix SPI reading Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 091/126] staging: wfx: unlock on error path Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 092/126] staging: kpc2000: fix error return code in kp2000_pcie_probe() Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 093/126] staging: greybus: Fix uninitialized scalar variable Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 094/126] iio: adc: stm32-adc: fix device used to request dma Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 095/126] iio: adc: stm32-dfsdm: " Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 096/126] iio: sca3000: Remove an erroneous get_device() Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 097/126] iio: dac: vf610: Fix an error handling path in vf610_dac_probe() Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 098/126] iio: adc: ti-ads8344: Fix channel selection Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 099/126] driver core: Fix SYNC_STATE_ONLY device link implementation Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 100/126] driver core: Fix handling of SYNC_STATE_ONLY + STATELESS device links Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 101/126] misc: rtsx: Add short delay after exit from ASPM Greg Kroah-Hartman
2020-05-26 18:53 ` [PATCH 5.6 102/126] tty: serial: add missing spin_lock_init for SiFive serial console Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 103/126] mei: release me_cl object reference Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 104/126] ipack: tpci200: fix error return code in tpci200_register() Greg Kroah-Hartman
2020-05-26 18:54 ` Greg Kroah-Hartman [this message]
2020-05-26 18:54 ` [PATCH 5.6 106/126] s390/kaslr: add support for R_390_JMP_SLOT relocation type Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 107/126] device-dax: dont leak kernel memory to user space after unloading kmem Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 108/126] rapidio: fix an error in get_user_pages_fast() error handling Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 109/126] kasan: disable branch tracing for core runtime Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 110/126] sh: include linux/time_types.h for sockios Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 111/126] sparc32: use PUD rather than PGD to get PMD in srmmu_nocache_init() Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 112/126] sparc32: fix page table traversal " Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 113/126] z3fold: fix use-after-free when freeing handles Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 114/126] iio: imu: st_lsm6dsx: unlock on error in st_lsm6dsx_shub_write_raw() Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 115/126] rxrpc: Fix the excessive initial retransmission timeout Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 116/126] rxrpc: Fix a memory leak in rxkad_verify_response() Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 117/126] tpm: check event log version before reading final events Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 118/126] s390/kexec_file: fix initrd location for kdump kernel Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 119/126] flow_dissector: Drop BPF flow dissector prog ref on netns cleanup Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 120/126] x86/unwind/orc: Fix unwind_get_return_address_ptr() for inactive tasks Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 121/126] rxrpc: Trace discarded ACKs Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 122/126] rxrpc: Fix ack discard Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 123/126] bpf: Prevent mmap()ing read-only maps as writable Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 124/126] sched/fair: Reorder enqueue/dequeue_task_fair path Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 125/126] sched/fair: Fix reordering of enqueue/dequeue_task_fair() Greg Kroah-Hartman
2020-05-26 18:54 ` [PATCH 5.6 126/126] sched/fair: Fix enqueue_task_fair() warning some more Greg Kroah-Hartman
2020-05-27  8:17 ` [PATCH 5.6 000/126] 5.6.15-rc1 review Naresh Kamboju
2020-05-27 10:01   ` Greg Kroah-Hartman
2020-05-27  8:34 ` Jon Hunter
2020-05-27 10:00   ` Greg Kroah-Hartman
2020-05-27 13:54 ` Guenter Roeck
2020-05-27 15:37   ` Greg Kroah-Hartman
2020-05-27 16:28 ` shuah
2020-05-27 17:30   ` 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=20200526183946.480389842@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=gor@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=schnelle@linux.ibm.com \
    --cc=stable@vger.kernel.org \
    --cc=svens@linux.ibm.com \
    /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).