diff options
-rw-r--r-- | drivers/scsi/isci/remote_device.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/scsi/isci/remote_device.c b/drivers/scsi/isci/remote_device.c index 48765aa84328..a3a6487264ea 100644 --- a/drivers/scsi/isci/remote_device.c +++ b/drivers/scsi/isci/remote_device.c | |||
@@ -243,8 +243,11 @@ enum sci_status isci_remote_device_terminate_requests( | |||
243 | idev->rnc.destination_state, | 243 | idev->rnc.destination_state, |
244 | ireq, ireq->flags); | 244 | ireq, ireq->flags); |
245 | } | 245 | } |
246 | spin_lock_irqsave(&ihost->scic_lock, flags); | ||
246 | clear_bit(IREQ_NO_AUTO_FREE_TAG, &ireq->flags); | 247 | clear_bit(IREQ_NO_AUTO_FREE_TAG, &ireq->flags); |
247 | isci_free_tag(ihost, ireq->io_tag); | 248 | if (!test_bit(IREQ_ABORT_PATH_ACTIVE, &ireq->flags)) |
249 | isci_free_tag(ihost, ireq->io_tag); | ||
250 | spin_unlock_irqrestore(&ihost->scic_lock, flags); | ||
248 | } else { | 251 | } else { |
249 | /* Terminate all TCs. */ | 252 | /* Terminate all TCs. */ |
250 | sci_remote_device_terminate_requests(idev); | 253 | sci_remote_device_terminate_requests(idev); |