From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Bart Van Assche <bvanassche@acm.org>,
Nicholas Bellinger <nab@linux-iscsi.org>,
Mike Christie <mchristi@redhat.com>,
Christoph Hellwig <hch@lst.de>, David Disseldorp <ddiss@suse.de>,
Hannes Reinecke <hare@suse.de>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
Sasha Levin <sashal@kernel.org>,
linux-scsi@vger.kernel.org, target-devel@vger.kernel.org
Subject: [PATCH AUTOSEL 4.19 47/97] scsi: target/core: Make sure that target_wait_for_sess_cmds() waits long enough
Date: Tue, 8 Jan 2019 14:28:56 -0500 [thread overview]
Message-ID: <20190108192949.122407-47-sashal@kernel.org> (raw)
In-Reply-To: <20190108192949.122407-1-sashal@kernel.org>
From: Bart Van Assche <bvanassche@acm.org>
[ Upstream commit ad669505c4e9db9af9faeb5c51aa399326a80d91 ]
A session must only be released after all code that accesses the session
structure has finished. Make sure that this is the case by introducing a
new command counter per session that is only decremented after the
.release_cmd() callback has finished. This patch fixes the following crash:
BUG: KASAN: use-after-free in do_raw_spin_lock+0x1c/0x130
Read of size 4 at addr ffff8801534b16e4 by task rmdir/14805
CPU: 16 PID: 14805 Comm: rmdir Not tainted 4.18.0-rc2-dbg+ #5
Call Trace:
dump_stack+0xa4/0xf5
print_address_description+0x6f/0x270
kasan_report+0x241/0x360
__asan_load4+0x78/0x80
do_raw_spin_lock+0x1c/0x130
_raw_spin_lock_irqsave+0x52/0x60
srpt_set_ch_state+0x27/0x70 [ib_srpt]
srpt_disconnect_ch+0x1b/0xc0 [ib_srpt]
srpt_close_session+0xa8/0x260 [ib_srpt]
target_shutdown_sessions+0x170/0x180 [target_core_mod]
core_tpg_del_initiator_node_acl+0xf3/0x200 [target_core_mod]
target_fabric_nacl_base_release+0x25/0x30 [target_core_mod]
config_item_release+0x9c/0x110 [configfs]
config_item_put+0x26/0x30 [configfs]
configfs_rmdir+0x3b8/0x510 [configfs]
vfs_rmdir+0xb3/0x1e0
do_rmdir+0x262/0x2c0
do_syscall_64+0x77/0x230
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Cc: Nicholas Bellinger <nab@linux-iscsi.org>
Cc: Mike Christie <mchristi@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: David Disseldorp <ddiss@suse.de>
Cc: Hannes Reinecke <hare@suse.de>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/target/target_core_transport.c | 35 ++++++++++++++++++--------
drivers/target/target_core_xcopy.c | 6 ++++-
include/target/target_core_base.h | 1 +
include/target/target_core_fabric.h | 2 +-
4 files changed, 32 insertions(+), 12 deletions(-)
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
index fc3093d21b96..3f7aad45d215 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -224,19 +224,28 @@ void transport_subsystem_check_init(void)
sub_api_initialized = 1;
}
+static void target_release_sess_cmd_refcnt(struct percpu_ref *ref)
+{
+ struct se_session *sess = container_of(ref, typeof(*sess), cmd_count);
+
+ wake_up(&sess->cmd_list_wq);
+}
+
/**
* transport_init_session - initialize a session object
* @se_sess: Session object pointer.
*
* The caller must have zero-initialized @se_sess before calling this function.
*/
-void transport_init_session(struct se_session *se_sess)
+int transport_init_session(struct se_session *se_sess)
{
INIT_LIST_HEAD(&se_sess->sess_list);
INIT_LIST_HEAD(&se_sess->sess_acl_list);
INIT_LIST_HEAD(&se_sess->sess_cmd_list);
spin_lock_init(&se_sess->sess_cmd_lock);
init_waitqueue_head(&se_sess->cmd_list_wq);
+ return percpu_ref_init(&se_sess->cmd_count,
+ target_release_sess_cmd_refcnt, 0, GFP_KERNEL);
}
EXPORT_SYMBOL(transport_init_session);
@@ -247,6 +256,7 @@ EXPORT_SYMBOL(transport_init_session);
struct se_session *transport_alloc_session(enum target_prot_op sup_prot_ops)
{
struct se_session *se_sess;
+ int ret;
se_sess = kmem_cache_zalloc(se_sess_cache, GFP_KERNEL);
if (!se_sess) {
@@ -254,7 +264,11 @@ struct se_session *transport_alloc_session(enum target_prot_op sup_prot_ops)
" se_sess_cache\n");
return ERR_PTR(-ENOMEM);
}
- transport_init_session(se_sess);
+ ret = transport_init_session(se_sess);
+ if (ret < 0) {
+ kfree(se_sess);
+ return ERR_PTR(ret);
+ }
se_sess->sup_prot_ops = sup_prot_ops;
return se_sess;
@@ -581,6 +595,7 @@ void transport_free_session(struct se_session *se_sess)
sbitmap_queue_free(&se_sess->sess_tag_pool);
kvfree(se_sess->sess_cmd_map);
}
+ percpu_ref_exit(&se_sess->cmd_count);
kmem_cache_free(se_sess_cache, se_sess);
}
EXPORT_SYMBOL(transport_free_session);
@@ -2724,6 +2739,7 @@ int target_get_sess_cmd(struct se_cmd *se_cmd, bool ack_kref)
}
se_cmd->transport_state |= CMD_T_PRE_EXECUTE;
list_add_tail(&se_cmd->se_cmd_list, &se_sess->sess_cmd_list);
+ percpu_ref_get(&se_sess->cmd_count);
out:
spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags);
@@ -2754,8 +2770,6 @@ static void target_release_cmd_kref(struct kref *kref)
if (se_sess) {
spin_lock_irqsave(&se_sess->sess_cmd_lock, flags);
list_del_init(&se_cmd->se_cmd_list);
- if (se_sess->sess_tearing_down && list_empty(&se_sess->sess_cmd_list))
- wake_up(&se_sess->cmd_list_wq);
spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags);
}
@@ -2763,6 +2777,8 @@ static void target_release_cmd_kref(struct kref *kref)
se_cmd->se_tfo->release_cmd(se_cmd);
if (compl)
complete(compl);
+
+ percpu_ref_put(&se_sess->cmd_count);
}
/**
@@ -2891,6 +2907,8 @@ void target_sess_cmd_list_set_waiting(struct se_session *se_sess)
spin_lock_irqsave(&se_sess->sess_cmd_lock, flags);
se_sess->sess_tearing_down = 1;
spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags);
+
+ percpu_ref_kill(&se_sess->cmd_count);
}
EXPORT_SYMBOL(target_sess_cmd_list_set_waiting);
@@ -2905,17 +2923,14 @@ void target_wait_for_sess_cmds(struct se_session *se_sess)
WARN_ON_ONCE(!se_sess->sess_tearing_down);
- spin_lock_irq(&se_sess->sess_cmd_lock);
do {
- ret = wait_event_lock_irq_timeout(
- se_sess->cmd_list_wq,
- list_empty(&se_sess->sess_cmd_list),
- se_sess->sess_cmd_lock, 180 * HZ);
+ ret = wait_event_timeout(se_sess->cmd_list_wq,
+ percpu_ref_is_zero(&se_sess->cmd_count),
+ 180 * HZ);
list_for_each_entry(cmd, &se_sess->sess_cmd_list, se_cmd_list)
target_show_cmd("session shutdown: still waiting for ",
cmd);
} while (ret <= 0);
- spin_unlock_irq(&se_sess->sess_cmd_lock);
}
EXPORT_SYMBOL(target_wait_for_sess_cmds);
diff --git a/drivers/target/target_core_xcopy.c b/drivers/target/target_core_xcopy.c
index 2718a933c0c6..7cdb5d7f6538 100644
--- a/drivers/target/target_core_xcopy.c
+++ b/drivers/target/target_core_xcopy.c
@@ -480,6 +480,8 @@ static const struct target_core_fabric_ops xcopy_pt_tfo = {
int target_xcopy_setup_pt(void)
{
+ int ret;
+
xcopy_wq = alloc_workqueue("xcopy_wq", WQ_MEM_RECLAIM, 0);
if (!xcopy_wq) {
pr_err("Unable to allocate xcopy_wq\n");
@@ -497,7 +499,9 @@ int target_xcopy_setup_pt(void)
INIT_LIST_HEAD(&xcopy_pt_nacl.acl_list);
INIT_LIST_HEAD(&xcopy_pt_nacl.acl_sess_list);
memset(&xcopy_pt_sess, 0, sizeof(struct se_session));
- transport_init_session(&xcopy_pt_sess);
+ ret = transport_init_session(&xcopy_pt_sess);
+ if (ret < 0)
+ return ret;
xcopy_pt_nacl.se_tpg = &xcopy_pt_tpg;
xcopy_pt_nacl.nacl_sess = &xcopy_pt_sess;
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
index 7a4ee7852ca4..2cfd3b4573b0 100644
--- a/include/target/target_core_base.h
+++ b/include/target/target_core_base.h
@@ -602,6 +602,7 @@ struct se_session {
struct se_node_acl *se_node_acl;
struct se_portal_group *se_tpg;
void *fabric_sess_ptr;
+ struct percpu_ref cmd_count;
struct list_head sess_list;
struct list_head sess_acl_list;
struct list_head sess_cmd_list;
diff --git a/include/target/target_core_fabric.h b/include/target/target_core_fabric.h
index f4147b398431..eb9d0923c55c 100644
--- a/include/target/target_core_fabric.h
+++ b/include/target/target_core_fabric.h
@@ -116,7 +116,7 @@ struct se_session *target_setup_session(struct se_portal_group *,
struct se_session *, void *));
void target_remove_session(struct se_session *);
-void transport_init_session(struct se_session *);
+int transport_init_session(struct se_session *se_sess);
struct se_session *transport_alloc_session(enum target_prot_op);
int transport_alloc_session_tags(struct se_session *, unsigned int,
unsigned int);
--
2.19.1
next prev parent reply other threads:[~2019-01-08 19:53 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-08 19:28 [PATCH AUTOSEL 4.19 01/97] netfilter: ipset: Allow matching on destination MAC address for mac and ipmac sets Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 02/97] gpio: pl061: Move irq_chip definition inside struct pl061 Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 03/97] drm/amd/display: Guard against null stream_state in set_crc_source Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 04/97] drm/amdkfd: fix interrupt spin lock Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 05/97] ixgbe: allow IPsec Tx offload in VEPA mode Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 06/97] platform/x86: asus-wmi: Tell the EC the OS will handle the display off hotkey Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 07/97] e1000e: allow non-monotonic SYSTIM readings Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 08/97] usb: typec: tcpm: Do not disconnect link for self powered devices Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 09/97] selftests/bpf: enable (uncomment) all tests in test_libbpf.sh Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 10/97] of: overlay: add missing of_node_put() after add new node to changeset Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 11/97] writeback: don't decrement wb->refcnt if !wb->bdi Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 12/97] serial: set suppress_bind_attrs flag only if builtin Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 13/97] bpf: Allow narrow loads with offset > 0 Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 14/97] ALSA: oxfw: add support for APOGEE duet FireWire Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 15/97] x86/mce: Fix -Wmissing-prototypes warnings Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 16/97] MIPS: SiByte: Enable swiotlb for SWARM, LittleSur and BigSur Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 17/97] crypto: ecc - regularize scalar for scalar multiplication Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 18/97] arm64: perf: set suppress_bind_attrs flag to true Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 19/97] USB: serial: ftdi_sio: use rounding when calculating baud rate divisors Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 20/97] drm/atomic-helper: Complete fake_commit->flip_done potentially earlier Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 21/97] clk: meson: meson8b: fix incorrect divider mapping in cpu_scale_table Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 22/97] samples: bpf: fix: error handling regarding kprobe_events Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 23/97] usb: gadget: udc: renesas_usb3: add a safety connection way for forced_b_device Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 24/97] fpga: altera-cvp: fix probing for multiple FPGAs on the bus Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 25/97] selinux: always allow mounting submounts Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 26/97] drm/amdgpu: Correct get_crtc_scanoutpos behavior when vpos >= vtotal Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 27/97] block: use rcu_work instead of call_rcu to avoid sleep in softirq Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 28/97] ASoC: pcm3168a: Don't disable pcm3168a when CONFIG_PM defined Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 29/97] scsi: qedi: Check for session online before getting iSCSI TLV data Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 30/97] drm/amdgpu: Reorder uvd ring init before uvd resume Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 31/97] rxe: IB_WR_REG_MR does not capture MR's iova field Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 32/97] efi/libstub: Disable some warnings for x86{,_64} Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 33/97] jffs2: Fix use of uninitialized delayed_work, lockdep breakage Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 34/97] clk: imx: make mux parent strings const Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 35/97] pstore/ram: Do not treat empty buffers as valid Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 36/97] media: uvcvideo: Refactor teardown of uvc on USB disconnect Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 37/97] powerpc/xmon: Fix invocation inside lock region Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 38/97] powerpc/pseries/cpuidle: Fix preempt warning Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 39/97] arm64: relocatable: fix inconsistencies in linker script and options Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 40/97] media: firewire: Fix app_info parameter type in avc_ca{,_app}_info Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 41/97] ASoC: use dma_ops of parent device for acp_audio_dma Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 42/97] IB/hfi1: Incorrect sizing of sge for PIO will OOPs Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 43/97] media: venus: core: Set dma maximum segment size Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 44/97] staging: erofs: fix use-after-free of on-stack `z_erofs_vle_unzip_io' Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 45/97] net: call sk_dst_reset when set SO_DONTROUTE Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 46/97] scsi: target: use consistent left-aligned ASCII INQUIRY data Sasha Levin
2019-01-08 19:28 ` Sasha Levin [this message]
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 48/97] selftests: do not macro-expand failed assertion expressions Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 49/97] arm64: kasan: Increase stack size for KASAN_EXTRA Sasha Levin
2019-01-08 19:28 ` [PATCH AUTOSEL 4.19 50/97] clk: imx6q: reset exclusive gates on init Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 51/97] arm64: Fix minor issues with the dcache_by_line_op macro Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 52/97] bpf: relax verifier restriction on BPF_MOV | BPF_ALU Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 53/97] kconfig: fix file name and line number of warn_ignored_character() Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 54/97] kconfig: fix memory leak when EOF is encountered in quotation Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 55/97] mmc: atmel-mci: do not assume idle after atmci_request_end Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 56/97] btrfs: volumes: Make sure there is no overlap of dev extents at mount time Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 57/97] btrfs: alloc_chunk: fix more DUP stripe size handling Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 58/97] btrfs: fix use-after-free due to race between replace start and cancel Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 59/97] Btrfs: fix deadlock when enabling quotas due to concurrent snapshot creation Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 60/97] Btrfs: fix access to available allocation bits when starting balance Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 61/97] btrfs: improve error handling of btrfs_add_link Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 62/97] tty/serial: do not free trasnmit buffer page under port lock Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 63/97] perf intel-pt: Fix error with config term "pt=0" Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 64/97] perf tests ARM: Disable breakpoint tests 32-bit Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 65/97] perf svghelper: Fix unchecked usage of strncpy() Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 66/97] perf parse-events: " Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 67/97] perf vendor events intel: Fix Load_Miss_Real_Latency on SKL/SKX Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 68/97] netfilter: ipt_CLUSTERIP: check MAC address when duplicate config is set Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 69/97] netfilter: ipt_CLUSTERIP: remove wrong WARN_ON_ONCE in netns exit routine Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 70/97] netfilter: ipt_CLUSTERIP: fix deadlock " Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 71/97] x86/topology: Use total_cpus for max logical packages calculation Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 72/97] dm crypt: use u64 instead of sector_t to store iv_offset Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 73/97] dm kcopyd: Fix bug causing workqueue stalls Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 74/97] perf stat: Avoid segfaults caused by negated options Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 75/97] tools lib subcmd: Don't add the kernel sources to the include path Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 76/97] dm snapshot: Fix excessive memory usage and workqueue stalls Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 77/97] perf cs-etm: Correct packets swapping in cs_etm__flush() Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 78/97] perf tools: Add missing sigqueue() prototype for systems lacking it Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 79/97] perf tools: Add missing open_memstream() " Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 80/97] quota: Lock s_umount in exclusive mode for Q_XQUOTA{ON,OFF} quotactls Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 81/97] clocksource/drivers/integrator-ap: Add missing of_node_put() Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 82/97] dm: Check for device sector overflow if CONFIG_LBDAF is not set Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 83/97] Bluetooth: btusb: Add support for Intel bluetooth device 8087:0029 Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 84/97] ALSA: bebob: fix model-id of unit for Apogee Ensemble Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 85/97] sysfs: Disable lockdep for driver bind/unbind files Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 86/97] IB/usnic: Fix potential deadlock Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 87/97] scsi: mpt3sas: fix memory ordering on 64bit writes Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 88/97] scsi: smartpqi: correct lun reset issues Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 89/97] ath10k: fix peer stats null pointer dereference Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 90/97] scsi: smartpqi: call pqi_free_interrupts() in pqi_shutdown() Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 91/97] scsi: megaraid: fix out-of-bound array accesses Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 92/97] iomap: don't search past page end in iomap_is_partially_uptodate Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 93/97] ocfs2: fix panic due to unrecovered local alloc Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 94/97] mm/page-writeback.c: don't break integrity writeback on ->writepage() error Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 95/97] mm/swap: use nr_node_ids for avail_lists in swap_info_struct Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 96/97] userfaultfd: clear flag if remap event not enabled Sasha Levin
2019-01-08 19:29 ` [PATCH AUTOSEL 4.19 97/97] mm, proc: be more verbose about unstable VMA flags in /proc/<pid>/smaps Sasha Levin
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=20190108192949.122407-47-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=bvanassche@acm.org \
--cc=ddiss@suse.de \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=mchristi@redhat.com \
--cc=nab@linux-iscsi.org \
--cc=stable@vger.kernel.org \
--cc=target-devel@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).