Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1217222

[PATCH 3.13.y-ckt 39/60] iscsi-target: Fix iser explicit logout TX kthread leak

From Kamal Mostafa <kamal@canonical.com>
Newsgroups linux.kernel
Subject [PATCH 3.13.y-ckt 39/60] iscsi-target: Fix iser explicit logout TX kthread leak
Date 2015-09-02 03:10 +0200
Message-ID <q44IP-6Dz-43@gated-at.bofh.it> (permalink)
References <q44z8-6cH-7@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


3.13.11-ckt26 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Nicholas Bellinger <nab@linux-iscsi.org>

commit 007d038bdf95ccfe2491d0078be54040d110fd06 upstream.

This patch fixes a regression introduced with the following commit
in v4.0-rc1 code, where an explicit iser-target logout would result
in ->tx_thread_active being incorrectly cleared by the logout post
handler, and subsequent TX kthread leak:

    commit 88dcd2dab5c23b1c9cfc396246d8f476c872f0ca
    Author: Nicholas Bellinger <nab@linux-iscsi.org>
    Date:   Thu Feb 26 22:19:15 2015 -0800

        iscsi-target: Convert iscsi_thread_set usage to kthread.h

To address this bug, change iscsit_logout_post_handler_closesession()
and iscsit_logout_post_handler_samecid() to only cmpxchg() on
->tx_thread_active for traditional iscsi/tcp connections.

This is required because iscsi/tcp connections are invoking logout
post handler logic directly from TX kthread context, while iser
connections are invoking logout post handler logic from a seperate
workqueue context.

Cc: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
---
 drivers/target/iscsi/iscsi_target.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
index cc55f68..931833f 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -4487,7 +4487,18 @@ static void iscsit_logout_post_handler_closesession(
 	struct iscsi_conn *conn)
 {
 	struct iscsi_session *sess = conn->sess;
-	int sleep = cmpxchg(&conn->tx_thread_active, true, false);
+	int sleep = 1;
+	/*
+	 * Traditional iscsi/tcp will invoke this logic from TX thread
+	 * context during session logout, so clear tx_thread_active and
+	 * sleep if iscsit_close_connection() has not already occured.
+	 *
+	 * Since iser-target invokes this logic from it's own workqueue,
+	 * always sleep waiting for RX/TX thread shutdown to complete
+	 * within iscsit_close_connection().
+	 */
+	if (conn->conn_transport->transport_type == ISCSI_TCP)
+		sleep = cmpxchg(&conn->tx_thread_active, true, false);
 
 	atomic_set(&conn->conn_logout_remove, 0);
 	complete(&conn->conn_logout_comp);
@@ -4501,7 +4512,10 @@ static void iscsit_logout_post_handler_closesession(
 static void iscsit_logout_post_handler_samecid(
 	struct iscsi_conn *conn)
 {
-	int sleep = cmpxchg(&conn->tx_thread_active, true, false);
+	int sleep = 1;
+
+	if (conn->conn_transport->transport_type == ISCSI_TCP)
+		sleep = cmpxchg(&conn->tx_thread_active, true, false);
 
 	atomic_set(&conn->conn_logout_remove, 0);
 	complete(&conn->conn_logout_comp);
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[3.13.y-ckt stable] Linux 3.13.11-ckt26 stable review Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:00 +0200
  [PATCH 3.13.y-ckt 46/60] ipr: Fix locking for unit attention handling Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:00 +0200
  [PATCH 3.13.y-ckt 32/60] usb: gadget: mv_udc_core: fix phy_regs I/O memory leak Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:00 +0200
  [PATCH 3.13.y-ckt 57/60] ALSA: hda - fix cs4210_spdif_automute() Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 22/60] Input: usbtouchscreen - avoid unresponsive TSC-30 touch screen Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 30/60] net: Clone skb before setting peeked flag Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 43/60] ALSA: usb-audio: add dB range mapping for some devices Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 50/60] x86/xen: Probe target addresses in set_aliased_prot() before the hypercall Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 20/60] blkcg: fix gendisk reference leak in blkg_conf_prep() Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 34/60] bonding: fix destruction of bond with devices different from arphrd_ether Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 58/60] niu: don't count tx error twice in case of headroom realloc fails Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 23/60] md/raid1: fix test for 'was read error from last working device'. Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 49/60] ALSA: hda - Fix MacBook Pro 5,2 quirk Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 55/60] netfilter: nf_conntrack: Support expectations in different zones Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 38/60] iscsi-target: Fix iscsit_start_kthreads failure OOPs Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 53/60] ipvs: fix crash with sync protocol v0 and FTP Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 26/60] mmc: sdhci-pxav3: fix platform_data is not initialized Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 27/60] mmc: block: Add missing mmc_blk_put() in power_ro_lock_show() Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 44/60] drm/radeon/combios: add some validation of lvds values Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 24/60] mmc: omap_hsmmc: Fix DTO and DCRC handling Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 39/60] iscsi-target: Fix iser explicit logout TX kthread leak Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 37/60] iscsi-target: Fix use-after-free during TPG session shutdown Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 40/60] ALSA: hda - Apply fixup for another Toshiba Satellite S50D Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 33/60] inet: frags: fix defragmented packet's IP header for af_packet Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 42/60] xfs: remote attributes need to be considered data Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 52/60] bridge: mdb: fix delmdb state in the notification Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 29/60] bonding: correctly handle bonding type change on enslave failure Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 47/60] ipr: Fix incorrect trace indexing Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 51/60] netfilter: ctnetlink: put back references to master ct and expect objects Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 45/60] x86/efi: Use all 64 bit of efi_memmap in setup_e820() Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 31/60] bridge: mdb: fix double add notification Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 35/60] ARM: OMAP2+: hwmod: Fix _wait_target_ready() for hwmods without sysc Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 48/60] ipr: Fix invalid array indexing for HRRQ Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 41/60] vhost: actually track log eventfd file Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 36/60] ASoC: pcm1681: Fix setting de-emphasis sampling rate selection Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:10 +0200
  [PATCH 3.13.y-ckt 03/60] libata: add ATA_HORKAGE_BROKEN_FPDMA_AA quirk for HP 250GB SATA disk VB0250EAVER Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 17/60] xhci: do not report PLC when link is in internal resume state Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 18/60] USB: OHCI: Fix race between ED unlink and URB submission Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 08/60] mac80211: clear subdir_stations when removing debugfs Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 10/60] md/raid10: always set reshape_safe when initializing reshape_position. Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
    Re: [PATCH 3.13.y-ckt 10/60] md/raid10: always set reshape_safe  when initializing reshape_position. Kamal Mostafa <kamal@canonical.com> - 2015-09-04 21:40 +0200
  [PATCH 3.13.y-ckt 05/60] libata: force disable trim for SuperSSpeed S238 Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 13/60] usb: xhci: Bugfix for NULL pointer deference in xhci_endpoint_init() function Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 06/60] libata: increase the timeout when setting transfer mode Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 11/60] drm: Stop resetting connector state to unknown Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 09/60] ALSA: hda - Add new GPU codec ID 0x10de007d to snd-hda Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 16/60] xhci: prevent bus_suspend if SS port resuming in phase 1 Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 25/60] isdn/gigaset: reset tty->receive_room when attaching ser_gigaset Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 19/60] usb-storage: ignore ZTE MF 823 card reader in mode 0x1225 Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 02/60] ata: pmp: add quirk for Marvell 4140 SATA PMP Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 04/60] libata: add ATA_HORKAGE_NOTRIM Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 15/60] xhci: report U3 when link is in resume state Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 21/60] tile: use free_bootmem_late() for initrd Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 12/60] usb: dwc3: Reset the transfer resource index on SET_INTERFACE Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200
  [PATCH 3.13.y-ckt 07/60] libata: Do not blacklist M510DC Kamal Mostafa <kamal@canonical.com> - 2015-09-02 03:20 +0200

csiph-web