diff options
author | Eric Moore <eric.moore@lsi.com> | 2009-04-21 17:39:24 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-04-27 11:53:57 -0400 |
commit | 77bdd9ee1e1d94fa853c354dcde881ddc5d277a5 (patch) | |
tree | 627538cf1cf7e1530f58a48dd0bd2fb36371a1a4 /drivers/scsi/mpt2sas/mpt2sas_ctl.c | |
parent | 0d04df9b4a83c50ebe2143f20c2d5469c83ba314 (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>
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_ctl.c')
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_ctl.c | 4 |
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); |