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>