public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ben Hutchings <ben@decadent.org.uk>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: akpm@linux-foundation.org,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	"Steffen Maier" <maier@linux.vnet.ibm.com>,
	"Benjamin Block" <bblock@linux.vnet.ibm.com>
Subject: [PATCH 3.2 051/199] scsi: zfcp: fix rport unblock race with LUN recovery
Date: Fri, 10 Mar 2017 11:46:10 +0000	[thread overview]
Message-ID: <lsq.1489146370.749540432@decadent.org.uk> (raw)
In-Reply-To: <lsq.1489146368.630732676@decadent.org.uk>

3.2.87-rc1 review patch.  If anyone has any objections, please let me know.

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

From: Steffen Maier <maier@linux.vnet.ibm.com>

commit 6f2ce1c6af37191640ee3ff6e8fc39ea10352f4c upstream.

It is unavoidable that zfcp_scsi_queuecommand() has to finish requests
with DID_IMM_RETRY (like fc_remote_port_chkready()) during the time
window when zfcp detected an unavailable rport but
fc_remote_port_delete(), which is asynchronous via
zfcp_scsi_schedule_rport_block(), has not yet blocked the rport.

However, for the case when the rport becomes available again, we should
prevent unblocking the rport too early.  In contrast to other FCP LLDDs,
zfcp has to open each LUN with the FCP channel hardware before it can
send I/O to a LUN.  So if a port already has LUNs attached and we
unblock the rport just after port recovery, recoveries of LUNs behind
this port can still be pending which in turn force
zfcp_scsi_queuecommand() to unnecessarily finish requests with
DID_IMM_RETRY.

This also opens a time window with unblocked rport (until the followup
LUN reopen recovery has finished).  If a scsi_cmnd timeout occurs during
this time window fc_timed_out() cannot work as desired and such command
would indeed time out and trigger scsi_eh. This prevents a clean and
timely path failover.  This should not happen if the path issue can be
recovered on FC transport layer such as path issues involving RSCNs.

Fix this by only calling zfcp_scsi_schedule_rport_register(), to
asynchronously trigger fc_remote_port_add(), after all LUN recoveries as
children of the rport have finished and no new recoveries of equal or
higher order were triggered meanwhile.  Finished intentionally includes
any recovery result no matter if successful or failed (still unblock
rport so other successful LUNs work).  For simplicity, we check after
each finished LUN recovery if there is another LUN recovery pending on
the same port and then do nothing.  We handle the special case of a
successful recovery of a port without LUN children the same way without
changing this case's semantics.

For debugging we introduce 2 new trace records written if the rport
unblock attempt was aborted due to still unfinished or freshly triggered
recovery. The records are only written above the default trace level.

Benjamin noticed the important special case of new recovery that can be
triggered between having given up the erp_lock and before calling
zfcp_erp_action_cleanup() within zfcp_erp_strategy().  We must avoid the
following sequence:

ERP thread                 rport_work      other context
-------------------------  --------------  --------------------------------
port is unblocked, rport still blocked,
 due to pending/running ERP action,
 so ((port->status & ...UNBLOCK) != 0)
 and (port->rport == NULL)
unlock ERP
zfcp_erp_action_cleanup()
case ZFCP_ERP_ACTION_REOPEN_LUN:
zfcp_erp_try_rport_unblock()
((status & ...UNBLOCK) != 0) [OLD!]
                                           zfcp_erp_port_reopen()
                                           lock ERP
                                           zfcp_erp_port_block()
                                           port->status clear ...UNBLOCK
                                           unlock ERP
                                           zfcp_scsi_schedule_rport_block()
                                           port->rport_task = RPORT_DEL
                                           queue_work(rport_work)
                           zfcp_scsi_rport_work()
                           (port->rport_task != RPORT_ADD)
                           port->rport_task = RPORT_NONE
                           zfcp_scsi_rport_block()
                           if (!port->rport) return
zfcp_scsi_schedule_rport_register()
port->rport_task = RPORT_ADD
queue_work(rport_work)
                           zfcp_scsi_rport_work()
                           (port->rport_task == RPORT_ADD)
                           port->rport_task = RPORT_NONE
                           zfcp_scsi_rport_register()
                           (port->rport == NULL)
                           rport = fc_remote_port_add()
                           port->rport = rport;

Now the rport was erroneously unblocked while the zfcp_port is blocked.
This is another situation we want to avoid due to scsi_eh
potential. This state would at least remain until the new recovery from
the other context finished successfully, or potentially forever if it
failed.  In order to close this race, we take the erp_lock inside
zfcp_erp_try_rport_unblock() when checking the status of zfcp_port or
LUN.  With that, the possible corresponding rport state sequences would
be: (unblock[ERP thread],block[other context]) if the ERP thread gets
erp_lock first and still sees ((port->status & ...UNBLOCK) != 0),
(block[other context],NOP[ERP thread]) if the ERP thread gets erp_lock
after the other context has already cleard ...UNBLOCK from port->status.

Since checking fields of struct erp_action is unsafe because they could
have been overwritten (re-used for new recovery) meanwhile, we only
check status of zfcp_port and LUN since these are only changed under
erp_lock elsewhere. Regarding the check of the proper status flags (port
or port_forced are similar to the shown adapter recovery):

[zfcp_erp_adapter_shutdown()]
zfcp_erp_adapter_reopen()
 zfcp_erp_adapter_block()
  * clear UNBLOCK ---------------------------------------+
 zfcp_scsi_schedule_rports_block()                       |
 write_lock_irqsave(&adapter->erp_lock, flags);-------+  |
 zfcp_erp_action_enqueue()                            |  |
  zfcp_erp_setup_act()                                |  |
   * set ERP_INUSE -----------------------------------|--|--+
 write_unlock_irqrestore(&adapter->erp_lock, flags);--+  |  |
.context-switch.                                         |  |
zfcp_erp_thread()                                        |  |
 zfcp_erp_strategy()                                     |  |
  write_lock_irqsave(&adapter->erp_lock, flags);------+  |  |
  ...                                                 |  |  |
  zfcp_erp_strategy_check_target()                    |  |  |
   zfcp_erp_strategy_check_adapter()                  |  |  |
    zfcp_erp_adapter_unblock()                        |  |  |
     * set UNBLOCK -----------------------------------|--+  |
  zfcp_erp_action_dequeue()                           |     |
   * clear ERP_INUSE ---------------------------------|-----+
  ...                                                 |
  write_unlock_irqrestore(&adapter->erp_lock, flags);-+

Hence, we should check for both UNBLOCK and ERP_INUSE because they are
interleaved.  Also we need to explicitly check ERP_FAILED for the link
down case which currently does not clear the UNBLOCK flag in
zfcp_fsf_link_down_info_eval().

Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
Fixes: 8830271c4819 ("[SCSI] zfcp: Dont fail SCSI commands when transitioning to blocked fc_rport")
Fixes: a2fa0aede07c ("[SCSI] zfcp: Block FC transport rports early on errors")
Fixes: 5f852be9e11d ("[SCSI] zfcp: Fix deadlock between zfcp ERP and SCSI")
Fixes: 338151e06608 ("[SCSI] zfcp: make use of fc_remote_port_delete when target port is unavailable")
Fixes: 3859f6a248cb ("[PATCH] zfcp: add rports to enable scsi_add_device to work again")
Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 drivers/s390/scsi/zfcp_dbf.c  | 17 +++++++++---
 drivers/s390/scsi/zfcp_erp.c  | 61 +++++++++++++++++++++++++++++++++++++++++--
 drivers/s390/scsi/zfcp_ext.h  |  4 ++-
 drivers/s390/scsi/zfcp_scsi.c |  4 +--
 4 files changed, 77 insertions(+), 9 deletions(-)

--- a/drivers/s390/scsi/zfcp_dbf.c
+++ b/drivers/s390/scsi/zfcp_dbf.c
@@ -282,11 +282,12 @@ void zfcp_dbf_rec_trig(char *tag, struct
 
 
 /**
- * zfcp_dbf_rec_run - trace event related to running recovery
+ * zfcp_dbf_rec_run_lvl - trace event related to running recovery
+ * @level: trace level to be used for event
  * @tag: identifier for event
  * @erp: erp_action running
  */
-void zfcp_dbf_rec_run(char *tag, struct zfcp_erp_action *erp)
+void zfcp_dbf_rec_run_lvl(int level, char *tag, struct zfcp_erp_action *erp)
 {
 	struct zfcp_dbf *dbf = erp->adapter->dbf;
 	struct zfcp_dbf_rec *rec = &dbf->rec_buf;
@@ -312,11 +313,21 @@ void zfcp_dbf_rec_run(char *tag, struct
 	else
 		rec->u.run.rec_count = atomic_read(&erp->adapter->erp_counter);
 
-	debug_event(dbf->rec, 1, rec, sizeof(*rec));
+	debug_event(dbf->rec, level, rec, sizeof(*rec));
 	spin_unlock_irqrestore(&dbf->rec_lock, flags);
 }
 
 /**
+ * zfcp_dbf_rec_run - trace event related to running recovery
+ * @tag: identifier for event
+ * @erp: erp_action running
+ */
+void zfcp_dbf_rec_run(char *tag, struct zfcp_erp_action *erp)
+{
+	zfcp_dbf_rec_run_lvl(1, tag, erp);
+}
+
+/**
  * zfcp_dbf_rec_run_wka - trace wka port event with info like running recovery
  * @tag: identifier for event
  * @wka_port: well known address port
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -3,7 +3,7 @@
  *
  * Error Recovery Procedures (ERP).
  *
- * Copyright IBM Corp. 2002, 2015
+ * Copyright IBM Corp. 2002, 2016
  */
 
 #define KMSG_COMPONENT "zfcp"
@@ -1212,6 +1212,62 @@ static void zfcp_erp_action_dequeue(stru
 	}
 }
 
+/**
+ * zfcp_erp_try_rport_unblock - unblock rport if no more/new recovery
+ * @port: zfcp_port whose fc_rport we should try to unblock
+ */
+static void zfcp_erp_try_rport_unblock(struct zfcp_port *port)
+{
+	unsigned long flags;
+	struct zfcp_adapter *adapter = port->adapter;
+	int port_status;
+	struct Scsi_Host *shost = adapter->scsi_host;
+	struct scsi_device *sdev;
+
+	write_lock_irqsave(&adapter->erp_lock, flags);
+	port_status = atomic_read(&port->status);
+	if ((port_status & ZFCP_STATUS_COMMON_UNBLOCKED)    == 0 ||
+	    (port_status & (ZFCP_STATUS_COMMON_ERP_INUSE |
+			    ZFCP_STATUS_COMMON_ERP_FAILED)) != 0) {
+		/* new ERP of severity >= port triggered elsewhere meanwhile or
+		 * local link down (adapter erp_failed but not clear unblock)
+		 */
+		zfcp_dbf_rec_run_lvl(4, "ertru_p", &port->erp_action);
+		write_unlock_irqrestore(&adapter->erp_lock, flags);
+		return;
+	}
+	spin_lock(shost->host_lock);
+	__shost_for_each_device(sdev, shost) {
+		struct zfcp_scsi_dev *zsdev = sdev_to_zfcp(sdev);
+		int lun_status;
+
+		if (zsdev->port != port)
+			continue;
+		/* LUN under port of interest */
+		lun_status = atomic_read(&zsdev->status);
+		if ((lun_status & ZFCP_STATUS_COMMON_ERP_FAILED) != 0)
+			continue; /* unblock rport despite failed LUNs */
+		/* LUN recovery not given up yet [maybe follow-up pending] */
+		if ((lun_status & ZFCP_STATUS_COMMON_UNBLOCKED) == 0 ||
+		    (lun_status & ZFCP_STATUS_COMMON_ERP_INUSE) != 0) {
+			/* LUN blocked:
+			 * not yet unblocked [LUN recovery pending]
+			 * or meanwhile blocked [new LUN recovery triggered]
+			 */
+			zfcp_dbf_rec_run_lvl(4, "ertru_l", &zsdev->erp_action);
+			spin_unlock(shost->host_lock);
+			write_unlock_irqrestore(&adapter->erp_lock, flags);
+			return;
+		}
+	}
+	/* now port has no child or all children have completed recovery,
+	 * and no ERP of severity >= port was meanwhile triggered elsewhere
+	 */
+	zfcp_scsi_schedule_rport_register(port);
+	spin_unlock(shost->host_lock);
+	write_unlock_irqrestore(&adapter->erp_lock, flags);
+}
+
 static void zfcp_erp_action_cleanup(struct zfcp_erp_action *act, int result)
 {
 	struct zfcp_adapter *adapter = act->adapter;
@@ -1222,6 +1278,7 @@ static void zfcp_erp_action_cleanup(stru
 	case ZFCP_ERP_ACTION_REOPEN_LUN:
 		if (!(act->status & ZFCP_STATUS_ERP_NO_REF))
 			scsi_device_put(sdev);
+		zfcp_erp_try_rport_unblock(port);
 		break;
 
 	case ZFCP_ERP_ACTION_REOPEN_PORT:
@@ -1232,7 +1289,7 @@ static void zfcp_erp_action_cleanup(stru
 		 */
 		if (act->step != ZFCP_ERP_STEP_UNINITIALIZED)
 			if (result == ZFCP_ERP_SUCCEEDED)
-				zfcp_scsi_schedule_rport_register(port);
+				zfcp_erp_try_rport_unblock(port);
 		/* fall through */
 	case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED:
 		put_device(&port->dev);
--- a/drivers/s390/scsi/zfcp_ext.h
+++ b/drivers/s390/scsi/zfcp_ext.h
@@ -3,7 +3,7 @@
  *
  * External function declarations.
  *
- * Copyright IBM Corp. 2002, 2015
+ * Copyright IBM Corp. 2002, 2016
  */
 
 #ifndef ZFCP_EXT_H
@@ -49,6 +49,8 @@ extern void zfcp_dbf_adapter_unregister(
 extern void zfcp_dbf_rec_trig(char *, struct zfcp_adapter *,
 			      struct zfcp_port *, struct scsi_device *, u8, u8);
 extern void zfcp_dbf_rec_run(char *, struct zfcp_erp_action *);
+extern void zfcp_dbf_rec_run_lvl(int level, char *tag,
+				 struct zfcp_erp_action *erp);
 extern void zfcp_dbf_rec_run_wka(char *, struct zfcp_fc_wka_port *, u64);
 extern void zfcp_dbf_hba_fsf_uss(char *, struct zfcp_fsf_req *);
 extern void zfcp_dbf_hba_fsf_res(char *, int, struct zfcp_fsf_req *);
--- a/drivers/s390/scsi/zfcp_scsi.c
+++ b/drivers/s390/scsi/zfcp_scsi.c
@@ -109,9 +109,7 @@ int zfcp_scsi_queuecommand(struct Scsi_H
 	}
 
 	if (unlikely(!(status & ZFCP_STATUS_COMMON_UNBLOCKED))) {
-		/* This could be either
-		 * open LUN pending: this is temporary, will result in
-		 *	open LUN or ERP_FAILED, so retry command
+		/* This could be
 		 * call to rport_delete pending: mimic retry from
 		 * 	fc_remote_port_chkready until rport is BLOCKED
 		 */

  parent reply	other threads:[~2017-03-10 13:11 UTC|newest]

Thread overview: 208+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-10 11:46 [PATCH 3.2 000/199] 3.2.87-rc1 review Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 098/199] USB: serial: ch341: fix modem-control and B0 handling Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 010/199] USB: UHCI: report non-PME wakeup signalling for Intel hardware Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 019/199] scsi: mvsas: fix command_active typo Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 065/199] xhci: free xhci virtual devices with leaf nodes first Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 137/199] catc: Combine failure cleanup code in catc_probe() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 193/199] igmp: do not remove igmp souce list info when set link down Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 161/199] net: bridge: fix old ioctl unlocked net device walk Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 046/199] block_dev: don't test bdev->bd_contains when it is not stable Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 030/199] USB: serial: kl5kusb105: abort on open exception path Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 176/199] net: sky2: Fix shutdown crash Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 044/199] libceph: verify authorize reply on connect Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 140/199] btrfs: fix btrfs_compat_ioctl failures on non-compat ioctls Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 158/199] route: do not cache fib route info on local routes with oif Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 122/199] platform/x86: intel_mid_powerbtn: Set IRQ_ONESHOT Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 138/199] catc: Use heap buffer for memory size test Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 004/199] perf scripting: Avoid leaking the scripting_context variable Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 196/199] Revert "KVM: x86: expose MSR_TSC_AUX to userspace" Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 189/199] tcp: fix 0 divide in __tcp_select_window() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 187/199] ipv6: fix ip6_tnl_parse_tlv_enc_lim() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 007/199] cris: Only build flash rescue image if CONFIG_ETRAX_AXISFLASHMAP is selected Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 173/199] sctp: assign assoc_id earlier in __sctp_connect Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 188/199] ipv6: pointer math error in ip6_tnl_parse_tlv_enc_lim() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 108/199] USB: serial: ch341: fix control-message error handling Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 111/199] mmc: mxs-mmc: Fix additional cycles after transmission stop Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 190/199] tun: Fix TUN_PKT_STRIP setting Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 075/199] USB: serial: mos7720: fix use-after-free on probe errors Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 167/199] net: sctp, forbid negative length Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 083/199] USB: serial: spcp8x5: fix NULL-deref at open Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 179/199] netvsc: reduce maximum GSO size Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 054/199] Input: i8042 - add Pegatron touchpad to noloop table Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 084/199] USB: serial: ti_usb_3410_5052: fix NULL-deref at open Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 157/199] decnet: Do not build routes to devices without decnet private data Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 049/199] scsi: zfcp: fix use-after-"free" in FC ingress path after TMF Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 178/199] net/dccp: fix use-after-free in dccp_invalid_packet Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 042/199] sparc: leon: Fix a retry loop in leon_init_timers() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 021/199] ext4: fix in-superblock mount options processing Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 038/199] hwmon: (ds620) Fix overflows seen when writing temperature limits Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 003/199] [media] ite-cir: initialize use_demodulator before using it Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 011/199] crypto: caam - fix AEAD givenc descriptors Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 149/199] [media] siano: make it work again with CONFIG_VMAP_STACK Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 184/199] ipv6: addrconf: Avoid addrconf_disable_change() using RCU read-side lock Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 180/199] ipv6: handle -EFAULT from skb_copy_bits Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 109/199] gro: use min_t() in skb_gro_reset_offset() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 150/199] net: xilinx_emaclite: fix receive buffer overflow Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 123/199] crypto: api - Clear CRYPTO_ALG_DEAD bit before registering an alg Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 131/199] USB: serial: pl2303: add ATEN device ID Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 185/199] net: socket: fix recvmmsg not returning error from sock_error Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 040/199] ext4: reject inodes with negative size Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 070/199] USB: serial: io_ti: fix another NULL-deref at open Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 135/199] ALSA: seq: Don't handle loop timeout at snd_seq_pool_done() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 142/199] scsi: zfcp: fix use-after-free by not tracing WKA port open/close on failed send Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 085/199] iommu/amd: Fix the left value check of cmd buffer Ben Hutchings
2017-03-10 11:46 ` Ben Hutchings [this message]
2017-03-10 11:46 ` [PATCH 3.2 095/199] USB: serial: ch341: reinitialize chip on reconfiguration Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 168/199] net: clear sk_err_soft in sk_clone_lock() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 141/199] ping: fix a null pointer dereference Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 072/199] USB: serial: keyspan_pda: verify endpoints at probe Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 039/199] nfs_write_end(): fix handling of short copies Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 156/199] lib/vsprintf.c: improve sanity check in vsnprintf() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 052/199] scsi: avoid a permanent stop of the scsi device's request queue Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 116/199] can: ti_hecc: add missing prepare and unprepare of the clock Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 041/199] kconfig/nconf: Fix hang when editing symbol with a long prompt Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 113/199] svcrpc: don't leak contexts on PROC_DESTROY Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 015/199] usb: xhci-mem: use passed in GFP flags instead of GFP_KERNEL Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 074/199] USB: serial: mos7720: fix NULL-deref at open Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 148/199] packet: fix races in fanout_add() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 099/199] USB: serial: ch341: fix open error handling Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 055/199] net, sched: fix soft lockup in tc_classify Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 164/199] tcp: fix overflow in __tcp_retransmit_skb() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 102/199] ARM: 8634/1: hw_breakpoint: blacklist Scorpion CPUs Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 029/199] USB: serial: kl5kusb105: fix open error path Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 139/199] ALSA: seq: Fix race at creating a queue Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 128/199] parisc: Don't use BITS_PER_LONG in userspace-exported swab.h header Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 096/199] USB: serial: ch341: fix initial modem-control state Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 144/199] l2tp: do not use udp_ioctl() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 162/199] ipmr/ip6mr: Initialize the last assert time of mfc entries Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 050/199] scsi: zfcp: do not trace pure benign residual HBA responses at default level Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 068/199] USB: serial: io_edgeport: fix NULL-deref at open Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 175/199] ip6_tunnel: disable caching when the traffic class is inherited Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 037/199] USB: serial: option: add support for Telit LE922A PIDs 0x1040, 0x1041 Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 082/199] USB: serial: pl2303: fix NULL-deref at open Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 091/199] USB: ch341: forward USB errors to USB serial core Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 101/199] USB: serial: ch341: fix baud rate and line-control handling Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 133/199] netlabel: out of bound access in cipso_v4_validate() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 058/199] net/mlx4: Remove BUG_ON from ICM allocation routine Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 104/199] gro: Disable frag0 optimization on IPv6 ext headers Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 047/199] IB/mad: Fix an array index check Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 001/199] staging: iio: ad7606: fix improper setting of oversampling pins Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 100/199] USB: serial: ch341: fix resume after reset Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 081/199] USB: serial: oti6858: fix NULL-deref at open Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 022/199] ext4: use more strict checks for inodes_per_block on mount Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 002/199] net/sched: em_meta: Fix 'meta vlan' to correctly recognize zero VID frames Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 112/199] i2c: fix kernel memory disclosure in dev interface Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 151/199] vfs: fix uninitialized flags in splice_to_pipe() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 080/199] USB: serial: omninet: fix NULL-derefs at open and disconnect Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 008/199] xfs: fix up xfs_swap_extent_forks inline extent handling Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 191/199] tun: read vnet_hdr_sz once Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 195/199] igmp, mld: Fix memory leak in igmpv3/mld_del_delrec() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 118/199] nbd: fix use-after-free of rq/bio in the xmit path Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 199/199] sctp: deny peeloff operation on asocs with threads sleeping on it Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 125/199] mm/huge_memory.c: respect FOLL_FORCE/FOLL_COW for thp Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 088/199] USB: fix problems with duplicate endpoint addresses Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 032/199] powerpc/ps3: Fix system hang with GCC 5 builds Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 192/199] macvtap: read vnet_hdr_size once Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 136/199] rtl8150: Use heap buffers for all register access Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 071/199] USB: serial: iuu_phoenix: fix NULL-deref at open Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 034/199] USB: cdc-acm: add device id for GW Instek AFG-125 Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 063/199] USB: gadgetfs: fix use-after-free bug Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 028/199] thermal: hwmon: Properly report critical temperature in sysfs Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 119/199] nbd: only set MSG_MORE when we have more to send Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 146/199] net/llc: avoid BUG_ON() in skb_orphan() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 182/199] drop_monitor: consider inserted data in genlmsg_end Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 127/199] sysctl: fix proc_doulongvec_ms_jiffies_minmax() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 124/199] USB: serial: option: add device ID for HP lt2523 (Novatel E371) Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 031/199] drivers: base: dma-mapping: Fix typo in dmam_alloc_non_coherent comments Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 159/199] sch_htb: update backlog as well Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 105/199] ocfs2: fix crash caused by stale lvb with fsdlm plugin Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 126/199] USB: Add quirk for WORLDE easykey.25 MIDI keyboard Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 130/199] ARM: 8643/3: arm/ptrace: Preserve previous registers for short regset write Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 026/199] regmap: cache: Remove unused 'blksize' variable Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 077/199] USB: serial: mos7720: fix parallel probe Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 027/199] ALSA: usb-audio: Fix bogus error return in snd_usb_create_stream() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 067/199] USB: serial: garmin_gps: fix memory leak on failed URB submit Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 066/199] USB: serial: cyberjack: fix NULL-deref at open Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 160/199] sch_dsmark: update backlog as well Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 197/199] ipc/shm: Fix shmat mmap nil-page protection Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 043/199] s390/vmlogrdr: fix IUCV buffer allocation Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 056/199] net: korina: Fix NAPI versus resources freeing Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 073/199] USB: serial: kobil_sct: fix NULL-deref in write Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 172/199] ipv6: dccp: fix out of bound access in dccp_v6_err() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 023/199] ext4: add sanity checking to count_overhead() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 013/199] powerpc/ibmebus: Fix further device reference leaks Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 163/199] net: fix sk_mem_reclaim_partial() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 145/199] net/sock: Add sock_efree() function Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 183/199] igmp: Make igmp group member RFC 3376 compliant Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 117/199] ceph: fix bad endianness handling in parse_reply_info_extra Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 186/199] can: Fix kernel panic at security_sock_rcv_skb Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 048/199] IB/multicast: Check ib_find_pkey() return value Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 059/199] usb: gadget: composite: Test get_alt() presence instead of set_alt() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 174/199] sock: fix sendmmsg for partial sendmsg Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 089/199] HID: hid-cypress: validate length of report Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 170/199] dccp: do not send reset to already closed sockets Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 033/199] Btrfs: fix tree search logic when replaying directory entry deletes Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 153/199] packet: Do not call fanout_release from atomic contexts Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 025/199] [media] DaVinci-VPFE-Capture: fix error handling Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 121/199] powerpc: Ignore reserved field in DCSR and PVR reads and writes Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 129/199] can: bcm: fix hrtimer/tasklet termination in bcm op removal Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 009/199] PCI: Check for PME in targeted sleep state Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 152/199] packet: call fanout_release, while UNREGISTERING a netdev Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 060/199] USB: dummy-hcd: fix bug in stop_activity (handle ep0) Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 154/199] Fix missing sanity check in /dev/sg Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 064/199] USB: gadgetfs: fix checks of wTotalLength in config descriptors Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 036/199] ALSA: usb-audio: Add QuickCam Communicate Deluxe/S7500 to volume_control_quirks Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 094/199] USB: serial: ch341: add register and USB request definitions Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 115/199] ubifs: Fix journal replay wrt. xattr nodes Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 076/199] USB: serial: mos7720: fix parport use-after-free on probe errors Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 087/199] usb: musb: Fix trying to free already-free IRQ 4 Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 005/199] usb: gadget: composite: correctly initialize ep->maxpacket Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 106/199] sysrq: attach sysrq handler correctly for 32-bit kernel Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 069/199] USB: serial: io_ti: fix NULL-deref at open Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 092/199] USB: ch341: remove redundant close from open error path Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 020/199] ssb: Fix error routine when fallback SPROM fails Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 061/199] usb: gadgetfs: restrict upper bound on device configuration size Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 107/199] vme: Fix wrong pointer utilization in ca91cx42_slave_get Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 024/199] dm crypt: mark key as invalid until properly loaded Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 194/199] mld: do not remove mld souce list info when set link down Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 045/199] fsnotify: Fix possible use-after-free in inode iteration on umount Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 078/199] USB: serial: mos7840: fix NULL-deref at open Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 177/199] net/sched: pedit: make sure that offset is valid Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 006/199] drm/gma500: Add compat ioctl Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 090/199] ata: sata_mv:- Handle return value of devm_ioremap Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 171/199] dccp: fix out of bound access in dccp_v4_err() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 143/199] xen-netfront: Delete rx_refill_timer in xennet_disconnect_backend() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 132/199] mm, fs: check for fatal signals in do_generic_file_read() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 014/199] powerpc/pci/rpadlpar: Fix device reference leaks Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 147/199] futex: Move futex_init() to core_initcall Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 120/199] powerpc/ptrace: Preserve previous fprs/vsrs on short regset write Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 012/199] powerpc/ibmebus: Fix device reference leaks in sysfs interface Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 166/199] tcp: fix wrong checksum calculation on MTU probing Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 017/199] ext4: fix stack memory corruption with 64k block size Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 165/199] net: avoid sk_forward_alloc overflows Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 086/199] x86/cpu: Fix bootup crashes by sanitizing the argument of the 'clearcpuid=' command-line option Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 016/199] ext4: fix mballoc breakage with 64k block size Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 097/199] USB: serial: ch341: fix open and resume after B0 Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 057/199] net/mlx4_en: Fix bad WQE issue Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 114/199] net/mlx4_core: Fix racy CQ (Completion Queue) free Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 053/199] target/iscsi: Fix double free in lio_target_tiqn_addtpg() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 169/199] net: mangle zero checksum in skb_checksum_help() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 198/199] sctp: avoid BUG_ON on sctp_wait_for_sndbuf Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 103/199] gro: Enter slow-path if there is no tailroom Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 079/199] USB: serial: mos7840: fix misleading interrupt-URB comment Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 155/199] irda: Fix lockdep annotations in hashbin_delete() Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 134/199] mac80211: Fix adding of mesh vendor IEs Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 062/199] USB: gadgetfs: fix unbounded memory allocation bug Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 018/199] IB/mlx4: Put non zero value in max_ah device attribute Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 181/199] drop_monitor: add missing call to genlmsg_end Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 110/199] xhci: fix deadlock at host remove by running watchdog correctly Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 093/199] USB: ch341: set tty baud speed according to tty struct Ben Hutchings
2017-03-10 11:46 ` [PATCH 3.2 035/199] hotplug: Make register and unregister notifier API symmetric Ben Hutchings
2017-03-10 12:47 ` [PATCH 3.2 000/199] 3.2.87-rc1 review Guenter Roeck
2017-03-10 13:06   ` Ben Hutchings
2017-03-11 15:15 ` [PATCH 3.2 000/202] 3.2.87-rc2 review Ben Hutchings
2017-03-11 15:15   ` [PATCH 3.2 202/202] tty: n_hdlc: get rid of racy n_hdlc.tbuf Ben Hutchings
2017-03-11 15:15   ` [PATCH 3.2 200/202] TTY: n_hdlc, fix lockdep false positive Ben Hutchings
2017-03-11 15:15   ` [PATCH 3.2 201/202] list: introduce list_first_entry_or_null Ben Hutchings
2017-03-11 16:52   ` [PATCH 3.2 000/202] 3.2.87-rc2 review Ben Hutchings
2017-03-12 18:18   ` Guenter Roeck

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=lsq.1489146370.749540432@decadent.org.uk \
    --to=ben@decadent.org.uk \
    --cc=akpm@linux-foundation.org \
    --cc=bblock@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maier@linux.vnet.ibm.com \
    --cc=martin.petersen@oracle.com \
    --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