LKML Archive on lore.kernel.org
 help / color / 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, Jason Gunthorpe <jgg@mellanox.com>,
	Leon Romanovsky <leonro@mellanox.com>,
	Doug Ledford <dledford@redhat.com>
Subject: [PATCH 5.2 121/131] RDMA/devices: Do not deadlock during client removal
Date: Mon,  5 Aug 2019 15:03:28 +0200
Message-ID: <20190805125000.066370950@linuxfoundation.org> (raw)
In-Reply-To: <20190805124951.453337465@linuxfoundation.org>

From: Jason Gunthorpe <jgg@mellanox.com>

commit 621e55ff5b8e0ab5d1063f0eae0ef3960bef8f6e upstream.

lockdep reports:

   WARNING: possible circular locking dependency detected

   modprobe/302 is trying to acquire lock:
   0000000007c8919c ((wq_completion)ib_cm){+.+.}, at: flush_workqueue+0xdf/0x990

   but task is already holding lock:
   000000002d3d2ca9 (&device->client_data_rwsem){++++}, at: remove_client_context+0x79/0xd0 [ib_core]

   which lock already depends on the new lock.

   the existing dependency chain (in reverse order) is:

   -> #2 (&device->client_data_rwsem){++++}:
          down_read+0x3f/0x160
          ib_get_net_dev_by_params+0xd5/0x200 [ib_core]
          cma_ib_req_handler+0x5f6/0x2090 [rdma_cm]
          cm_process_work+0x29/0x110 [ib_cm]
          cm_req_handler+0x10f5/0x1c00 [ib_cm]
          cm_work_handler+0x54c/0x311d [ib_cm]
          process_one_work+0x4aa/0xa30
          worker_thread+0x62/0x5b0
          kthread+0x1ca/0x1f0
          ret_from_fork+0x24/0x30

   -> #1 ((work_completion)(&(&work->work)->work)){+.+.}:
          process_one_work+0x45f/0xa30
          worker_thread+0x62/0x5b0
          kthread+0x1ca/0x1f0
          ret_from_fork+0x24/0x30

   -> #0 ((wq_completion)ib_cm){+.+.}:
          lock_acquire+0xc8/0x1d0
          flush_workqueue+0x102/0x990
          cm_remove_one+0x30e/0x3c0 [ib_cm]
          remove_client_context+0x94/0xd0 [ib_core]
          disable_device+0x10a/0x1f0 [ib_core]
          __ib_unregister_device+0x5a/0xe0 [ib_core]
          ib_unregister_device+0x21/0x30 [ib_core]
          mlx5_ib_stage_ib_reg_cleanup+0x9/0x10 [mlx5_ib]
          __mlx5_ib_remove+0x3d/0x70 [mlx5_ib]
          mlx5_ib_remove+0x12e/0x140 [mlx5_ib]
          mlx5_remove_device+0x144/0x150 [mlx5_core]
          mlx5_unregister_interface+0x3f/0xf0 [mlx5_core]
          mlx5_ib_cleanup+0x10/0x3a [mlx5_ib]
          __x64_sys_delete_module+0x227/0x350
          do_syscall_64+0xc3/0x6a4
          entry_SYSCALL_64_after_hwframe+0x49/0xbe

Which is due to the read side of the client_data_rwsem being obtained
recursively through a work queue flush during cm client removal.

The lock is being held across the remove in remove_client_context() so
that the function is a fence, once it returns the client is removed. This
is required so that the two callers do not proceed with destruction until
the client completes removal.

Instead of using client_data_rwsem use the existing device unregistration
refcount and add a similar client unregistration (client->uses) refcount.

This will fence the two unregistration paths without holding any locks.

Cc: <stable@vger.kernel.org>
Fixes: 921eab1143aa ("RDMA/devices: Re-organize device.c locking")
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Link: https://lore.kernel.org/r/20190731081841.32345-2-leon@kernel.org
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/infiniband/core/device.c |   54 +++++++++++++++++++++++++++++----------
 include/rdma/ib_verbs.h          |    3 ++
 2 files changed, 44 insertions(+), 13 deletions(-)

--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -98,6 +98,12 @@ static LIST_HEAD(client_list);
 static DEFINE_XARRAY_FLAGS(clients, XA_FLAGS_ALLOC);
 static DECLARE_RWSEM(clients_rwsem);
 
+static void ib_client_put(struct ib_client *client)
+{
+	if (refcount_dec_and_test(&client->uses))
+		complete(&client->uses_zero);
+}
+
 /*
  * If client_data is registered then the corresponding client must also still
  * be registered.
@@ -651,6 +657,14 @@ static int add_client_context(struct ib_
 
 	down_write(&device->client_data_rwsem);
 	/*
+	 * So long as the client is registered hold both the client and device
+	 * unregistration locks.
+	 */
+	if (!refcount_inc_not_zero(&client->uses))
+		goto out_unlock;
+	refcount_inc(&device->refcount);
+
+	/*
 	 * Another caller to add_client_context got here first and has already
 	 * completely initialized context.
 	 */
@@ -673,6 +687,9 @@ static int add_client_context(struct ib_
 	return 0;
 
 out:
+	ib_device_put(device);
+	ib_client_put(client);
+out_unlock:
 	up_write(&device->client_data_rwsem);
 	return ret;
 }
@@ -692,7 +709,7 @@ static void remove_client_context(struct
 	client_data = xa_load(&device->client_data, client_id);
 	xa_clear_mark(&device->client_data, client_id, CLIENT_DATA_REGISTERED);
 	client = xa_load(&clients, client_id);
-	downgrade_write(&device->client_data_rwsem);
+	up_write(&device->client_data_rwsem);
 
 	/*
 	 * Notice we cannot be holding any exclusive locks when calling the
@@ -702,17 +719,13 @@ static void remove_client_context(struct
 	 *
 	 * For this reason clients and drivers should not call the
 	 * unregistration functions will holdling any locks.
-	 *
-	 * It tempting to drop the client_data_rwsem too, but this is required
-	 * to ensure that unregister_client does not return until all clients
-	 * are completely unregistered, which is required to avoid module
-	 * unloading races.
 	 */
 	if (client->remove)
 		client->remove(device, client_data);
 
 	xa_erase(&device->client_data, client_id);
-	up_read(&device->client_data_rwsem);
+	ib_device_put(device);
+	ib_client_put(client);
 }
 
 static int alloc_port_data(struct ib_device *device)
@@ -1696,6 +1709,8 @@ int ib_register_client(struct ib_client
 	unsigned long index;
 	int ret;
 
+	refcount_set(&client->uses, 1);
+	init_completion(&client->uses_zero);
 	ret = assign_client_id(client);
 	if (ret)
 		return ret;
@@ -1731,16 +1746,29 @@ void ib_unregister_client(struct ib_clie
 	unsigned long index;
 
 	down_write(&clients_rwsem);
+	ib_client_put(client);
 	xa_clear_mark(&clients, client->client_id, CLIENT_REGISTERED);
 	up_write(&clients_rwsem);
+
+	/* We do not want to have locks while calling client->remove() */
+	rcu_read_lock();
+	xa_for_each (&devices, index, device) {
+		if (!ib_device_try_get(device))
+			continue;
+		rcu_read_unlock();
+
+		remove_client_context(device, client->client_id);
+
+		ib_device_put(device);
+		rcu_read_lock();
+	}
+	rcu_read_unlock();
+
 	/*
-	 * Every device still known must be serialized to make sure we are
-	 * done with the client callbacks before we return.
+	 * remove_client_context() is not a fence, it can return even though a
+	 * removal is ongoing. Wait until all removals are completed.
 	 */
-	down_read(&devices_rwsem);
-	xa_for_each (&devices, index, device)
-		remove_client_context(device, client->client_id);
-	up_read(&devices_rwsem);
+	wait_for_completion(&client->uses_zero);
 
 	down_write(&clients_rwsem);
 	list_del(&client->list);
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2722,6 +2722,9 @@ struct ib_client {
 			const union ib_gid *gid,
 			const struct sockaddr *addr,
 			void *client_data);
+
+	refcount_t uses;
+	struct completion uses_zero;
 	struct list_head list;
 	u32 client_id;
 



  parent reply index

Thread overview: 145+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-05 13:01 [PATCH 5.2 000/131] 5.2.7-stable review Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 001/131] ARM: riscpc: fix DMA Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 002/131] ARM: dts: rockchip: Make rk3288-veyron-minnie run at hs200 Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 003/131] ARM: dts: rockchip: Make rk3288-veyron-mickeys emmc work again Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 004/131] clk: meson: mpll: properly handle spread spectrum Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 005/131] ARM: dts: rockchip: Mark that the rk3288 timer might stop in suspend Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 006/131] ftrace: Enable trampoline when rec count returns back to one Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 007/131] arm64: dts: qcom: qcs404-evb: fix l3 min voltage Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 008/131] soc: qcom: rpmpd: fixup rpmpd set performance state Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 009/131] arm64: dts: marvell: mcbin: enlarge PCI memory window Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 010/131] soc: imx: soc-imx8: Correct return value of error handle Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 011/131] dmaengine: tegra-apb: Error out if DMA_PREP_INTERRUPT flag is unset Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 012/131] arm64: dts: rockchip: fix isp iommu clocks and power domain Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 013/131] kernel/module.c: Only return -EEXIST for modules that have finished loading Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 014/131] PCI: OF: Initialize dev->fwnode appropriately Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 015/131] firmware/psci: psci_checker: Park kthreads before stopping them Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 016/131] soc: imx8: Fix potential kernel dump in error path Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 017/131] arm64: qcom: qcs404: Add reset-cells to GCC node Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 018/131] swiotlb: fix phys_addr_t overflow warning Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 019/131] MIPS: lantiq: Fix bitfield masking Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 020/131] dmaengine: rcar-dmac: Reject zero-length slave DMA requests Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 021/131] ARM: exynos: Only build MCPM support if used Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 022/131] clk: tegra210: fix PLLU and PLLU_OUT1 Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 023/131] fs/adfs: super: fix use-after-free bug Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 024/131] clk: sprd: Add check for return value of sprd_clk_regmap_init() Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 025/131] arm64: dts: rockchip: Fix USB3 Type-C on rk3399-sapphire Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 026/131] btrfs: tree-checker: Check if the file extent end overflows Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 027/131] btrfs: fix minimum number of chunk errors for DUP Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 028/131] btrfs: Flush before reflinking any extent to prevent NOCOW write falling back to COW without data reservation Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 029/131] remoteproc: copy parent dma_pfn_offset for vdev Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 030/131] btrfs: qgroup: Dont hold qgroup_ioctl_lock in btrfs_qgroup_inherit() Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 031/131] cifs: Fix a race condition with cifs_echo_request Greg Kroah-Hartman
2019-08-05 13:01 ` [PATCH 5.2 032/131] ceph: fix improper use of smp_mb__before_atomic() Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 033/131] ceph: fix dir_lease_is_valid() Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 034/131] ceph: return -ERANGE if virtual xattr value didnt fit in buffer Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 035/131] virtio-mmio: add error check for platform_get_irq Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 036/131] ACPI: blacklist: fix clang warning for unused DMI table Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 037/131] scsi: zfcp: fix GCC compiler warning emitted with -Wmaybe-uninitialized Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 038/131] selftests/bpf: do not ignore clang failures Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 039/131] drm/amd/display: Expose audio inst from DC to DM Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 040/131] cifs: fix crash in cifs_dfs_do_automount Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 041/131] perf version: Fix segfault due to missing OPT_END() Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 042/131] x86: kvm: avoid constant-conversion warning Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 043/131] ACPI: fix false-positive -Wuninitialized warning Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 044/131] KVM: nVMX: Ignore segment base for VMX memory operand when segment not FS or GS Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 045/131] bpf: fix BTF verifier size resolution logic Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 046/131] be2net: Signal that the device cannot transmit during reconfiguration Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 047/131] mm/z3fold: dont try to use buddy slots after free Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 048/131] mm/slab_common.c: work around clang bug #42570 Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 049/131] mm/memcontrol.c: keep local VM counters in sync with the hierarchical ones Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 050/131] mm/z3fold.c: reinitialize zhdr structs after migration Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 051/131] x86/apic: Silence -Wtype-limits compiler warnings Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 052/131] x86: math-emu: Hide clang warnings for 16-bit overflow Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 053/131] mm/cma.c: fail if fixed declaration cant be honored Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 054/131] lib/test_overflow.c: avoid tainting the kernel and fix wrap size Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 055/131] lib/test_string.c: avoid masking memset16/32/64 failures Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 056/131] mm/ioremap: check virtual address alignment while creating huge mappings Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 057/131] coda: add error handling for fget Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 058/131] coda: fix build using bare-metal toolchain Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 059/131] uapi linux/coda_psdev.h: move upc_req definition from uapi to kernel side headers Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 060/131] drivers/rapidio/devices/rio_mport_cdev.c: NUL terminate some strings Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 061/131] ipc/mqueue.c: only perform resource calculation if user valid Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 062/131] nds32: fix asm/syscall.h Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 063/131] device-dax: fix memory and resource leak if hotplug fails Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 064/131] mm/hotplug: make remove_memory() interface usable Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 065/131] stacktrace: Force USER_DS for stack_trace_save_user() Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 066/131] crypto: ccp - Fix SEV_VERSION_GREATER_OR_EQUAL Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 067/131] xen/pv: Fix a boot up hang revealed by int3 self test Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 068/131] x86/kvm: Dont call kvm_spurious_fault() from .fixup Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 069/131] x86/paravirt: Fix callee-saved function ELF sizes Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 070/131] x86, boot: Remove multiple copy of static function sanitize_boot_params() Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 071/131] bpf: Disable GCC -fgcse optimization for ___bpf_prog_run() Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 072/131] drm/nouveau: fix memory leak in nouveau_conn_reset() Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 073/131] dma-direct: correct the physical addr in dma_direct_sync_sg_for_cpu/device Greg Kroah-Hartman
2019-08-06 12:41   ` Sasha Levin
2019-08-06 12:57     ` Robin Murphy
2019-08-06 22:04       ` Sasha Levin
2019-08-07  5:44         ` Christoph Hellwig
2019-08-05 13:02 ` [PATCH 5.2 074/131] drm/nouveau/dmem: missing mutex_lock in error path Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 075/131] kconfig: Clear "written" flag to avoid data loss Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 076/131] kbuild: initialize CLANG_FLAGS correctly in the top Makefile Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 077/131] kbuild: modpost: include .*.cmd files only when targets exist Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 078/131] tpm: Fix null pointer dereference on chip register error path Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 079/131] Btrfs: fix incremental send failure after deduplication Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 080/131] Btrfs: fix race leading to fs corruption after transaction abort Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 081/131] dax: Fix missed wakeup in put_unlocked_entry() Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 082/131] fgraph: Remove redundant ftrace_graph_notrace_addr() test Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 083/131] mmc: dw_mmc: Fix occasional hang after tuning on eMMC Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 084/131] mmc: meson-mx-sdio: Fix misuse of GENMASK macro Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 085/131] mmc: host: sdhci-sprd: Fix the missing pm_runtime_put_noidle() Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 086/131] mmc: mmc_spi: Enable stable writes Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 087/131] gpiolib: Preserve desc->flags when setting state Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 088/131] gpio: dont WARN() on NULL descs if gpiolib is disabled Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 089/131] gpiolib: fix incorrect IRQ requesting of an active-low lineevent Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 090/131] IB/hfi1: Fix Spectre v1 vulnerability Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 091/131] drm/nouveau: Only release VCPI slots on mode changes Greg Kroah-Hartman
2019-08-05 13:02 ` [PATCH 5.2 092/131] mtd: rawnand: micron: handle on-die "ECC-off" devices correctly Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 093/131] eeprom: at24: make spd world-readable again Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 094/131] i2c: iproc: Fix i2c master read more than 63 bytes Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 095/131] i2c: at91: disable TXRDY interrupt after sending data Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 096/131] i2c: at91: fix clk_offset for sama5d2 Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 097/131] powerpc/kasan: fix early boot failure on PPC32 Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 098/131] selinux: fix memory leak in policydb_init() Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 099/131] ALSA: hda: Fix 1-minute detection delay when i915 module is not available Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 100/131] mm: vmscan: check if mem cgroup is disabled or not before calling memcg slab shrinker Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 101/131] mm: migrate: fix reference check race between __find_get_block() and migration Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 102/131] mm: compaction: avoid 100% CPU usage during compaction when a task is killed Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 103/131] ubsan: build ubsan.c more conservatively Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 104/131] mm/migrate.c: initialize pud_entry in migrate_vma() Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 105/131] loop: Fix mount(2) failure due to race with LOOP_SET_FD Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 106/131] s390/dasd: fix endless loop after read unit address configuration Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 107/131] cgroup: kselftest: relax fs_spec checks Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 108/131] parisc: Add archclean Makefile target Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 109/131] parisc: Strip debug info from kernel before creating compressed vmlinuz Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 110/131] parisc: Fix build of compressed kernel even with debug enabled Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 111/131] drivers/perf: arm_pmu: Fix failure path in PM notifier Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 112/131] arm64: compat: Allow single-byte watchpoints on all addresses Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 113/131] arm64: cpufeature: Fix feature comparison for CTR_EL0.{CWG,ERG} Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 114/131] io_uring: fix KASAN use after free in io_sq_wq_submit_work Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 115/131] clk: mediatek: mt8183: Register 13MHz clock earlier for clocksource Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 116/131] scsi: mpt3sas: Use 63-bit DMA addressing on SAS35 HBA Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 117/131] nbd: replace kill_bdev() with __invalidate_device() again Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 118/131] xen/swiotlb: fix condition for calling xen_destroy_contiguous_region() Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 119/131] xen/gntdev.c: Replace vm_map_pages() with vm_map_pages_zero() Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 120/131] RDMA/bnxt_re: Honor vlan_id in GID entry comparison Greg Kroah-Hartman
2019-08-05 13:03 ` Greg Kroah-Hartman [this message]
2019-08-05 13:03 ` [PATCH 5.2 122/131] IB/mlx5: Fix unreg_umr to ignore the mkey state Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 123/131] IB/mlx5: Use direct mkey destroy command upon UMR unreg failure Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 124/131] IB/mlx5: Move MRs to a kernel PD when freeing them to the MR cache Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 125/131] IB/mlx5: Fix clean_mr() to work in the expected order Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 126/131] IB/mlx5: Fix RSS Toeplitz setup to be aligned with the HW specification Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 127/131] IB/hfi1: Check for error on call to alloc_rsm_map_table Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 128/131] IB/hfi1: Drop all TID RDMA READ RESP packets after r_next_psn Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 129/131] IB/hfi1: Field not zero-ed when allocating TID flow memory Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 130/131] drm/i915/perf: fix ICL perf register offsets Greg Kroah-Hartman
2019-08-05 13:03 ` [PATCH 5.2 131/131] drm/i915/gvt: fix incorrect cache entry for guest page mapping Greg Kroah-Hartman
2019-08-05 18:35 ` [PATCH 5.2 000/131] 5.2.7-stable review kernelci.org bot
2019-08-06  0:51 ` shuah
2019-08-06  5:34   ` Greg Kroah-Hartman
2019-08-06  6:17 ` Naresh Kamboju
2019-08-06 10:55   ` Greg Kroah-Hartman
2019-08-06 15:50 ` Guenter Roeck
2019-08-06 16:01   ` Greg Kroah-Hartman
2019-08-06 18:30 ` Jon Hunter
2019-08-06 18:44   ` Greg Kroah-Hartman

Reply instructions:

You may reply publically 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=20190805125000.066370950@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=dledford@redhat.com \
    --cc=jgg@mellanox.com \
    --cc=leonro@mellanox.com \
    --cc=linux-kernel@vger.kernel.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

LKML Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git
	git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git
	git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git
	git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git
	git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git
	git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git
	git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git
	git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \
		linux-kernel@vger.kernel.org linux-kernel@archiver.kernel.org
	public-inbox-index lkml


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel


AGPL code for this site: git clone https://public-inbox.org/ public-inbox