svn commit: r240662 - stable/9/sys/dev/usb/storage

Hans Petter Selasky hselasky at FreeBSD.org
Tue Sep 18 16:39:04 UTC 2012


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);
 	}
 }
 


More information about the svn-src-all mailing list