aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Moore <eric.moore@lsi.com>2009-04-21 17:39:24 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-04-27 11:53:57 -0400
commit77bdd9ee1e1d94fa853c354dcde881ddc5d277a5 (patch)
tree627538cf1cf7e1530f58a48dd0bd2fb36371a1a4
parent0d04df9b4a83c50ebe2143f20c2d5469c83ba314 (diff)
[SCSI] mpt2sas : running out of message frames
The driver is not freeing message frame when returning failure from _ctl_do_task_abort. If you call this function 500 times when its unable to find an active task mid, you end up with no message frames. Signed-off-by: Eric Moore <eric.moore@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_ctl.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_ctl.c b/drivers/scsi/mpt2sas/mpt2sas_ctl.c
index 2d4f85c9d7a1..e0eab0a9bc4c 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_ctl.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_ctl.c
@@ -714,8 +714,10 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc,
714 714
715 if (tm_request->TaskType == 715 if (tm_request->TaskType ==
716 MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK) { 716 MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK) {
717 if (_ctl_do_task_abort(ioc, &karg, tm_request)) 717 if (_ctl_do_task_abort(ioc, &karg, tm_request)) {
718 mpt2sas_base_free_smid(ioc, smid);
718 goto out; 719 goto out;
720 }
719 } 721 }
720 722
721 mutex_lock(&ioc->tm_cmds.mutex); 723 mutex_lock(&ioc->tm_cmds.mutex);