diff options
| author | Scott Long <scottl@FreeBSD.org> | 2005-05-06 00:54:02 +0000 |
|---|---|---|
| committer | Scott Long <scottl@FreeBSD.org> | 2005-05-06 00:54:02 +0000 |
| commit | dff6e84dafe00bfeba946991db42eeec2f0ce727 (patch) | |
| tree | 2a01795719cf2f3943e56f9a2ead97b4496d0605 | |
| parent | f37ba224709daf04f85ecde90a632d31df4f84ae (diff) | |
MFC: Properly lock calls to xpt_done()
Approved by: re
Notes
svn path=/releng/5.4/; revision=145946
| -rw-r--r-- | sys/dev/amr/amr_cam.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/amr/amr_cam.c b/sys/dev/amr/amr_cam.c index 66e4b5b4a0fb..ba9b59062d5e 100644 --- a/sys/dev/amr/amr_cam.c +++ b/sys/dev/amr/amr_cam.c @@ -558,7 +558,11 @@ amr_cam_complete(struct amr_command *ac) free(ap, M_DEVBUF); if ((csio->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE) debug(2, "%*D\n", imin(csio->dxfer_len, 16), csio->data_ptr, " "); + mtx_unlock(&ac->ac_sc->amr_io_lock); + mtx_lock(&Giant); xpt_done((union ccb *)csio); + mtx_unlock(&Giant); + mtx_lock(&ac->ac_sc->amr_io_lock); amr_releasecmd(ac); } @@ -621,6 +625,10 @@ amr_cam_complete_extcdb(struct amr_command *ac) free(aep, M_DEVBUF); if ((csio->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE) debug(2, "%*D\n", imin(csio->dxfer_len, 16), csio->data_ptr, " "); + mtx_unlock(&ac->ac_sc->amr_io_lock); + mtx_lock(&Giant); xpt_done((union ccb *)csio); + mtx_unlock(&Giant); + mtx_lock(&ac->ac_sc->amr_io_lock); amr_releasecmd(ac); } |
