Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Sep 2012 16:39:04 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r240662 - stable/9/sys/dev/usb/storage
Message-ID:  <201209181639.q8IGd45G026059@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Tue Sep 18 16:39:04 2012
New Revision: 240662
URL: http://svn.freebsd.org/changeset/base/240662

Log:
  MFC r232358:
  Close a detach race. Make sure all pending
  CCB's get canceled at device detach.

Modified:
  stable/9/sys/dev/usb/storage/umass.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/usb/storage/umass.c
==============================================================================
--- stable/9/sys/dev/usb/storage/umass.c	Tue Sep 18 16:37:11 2012	(r240661)
+++ stable/9/sys/dev/usb/storage/umass.c	Tue Sep 18 16:39:04 2012	(r240662)
@@ -1046,6 +1046,11 @@ umass_detach(device_t dev)
 	usbd_transfer_unsetup(sc->sc_xfer, UMASS_T_MAX);
 
 	mtx_lock(&sc->sc_mtx);
+
+	/* cancel any leftover CCB's */
+
+	umass_cancel_ccb(sc);
+
 	umass_cam_detach_sim(sc);
 
 	mtx_unlock(&sc->sc_mtx);
@@ -1571,8 +1576,7 @@ umass_command_start(struct umass_softc *
 	if (sc->sc_xfer[sc->sc_last_xfer_index]) {
 		usbd_transfer_start(sc->sc_xfer[sc->sc_last_xfer_index]);
 	} else {
-		ccb->ccb_h.status = CAM_TID_INVALID;
-		xpt_done(ccb);
+		umass_cancel_ccb(sc);
 	}
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201209181639.q8IGd45G026059>