[SCSI] mpt2sas : running out of message frames
authorEric Moore <eric.moore@lsi.com>
Tue, 21 Apr 2009 21:39:24 +0000 (15:39 -0600)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Mon, 27 Apr 2009 15:53:57 +0000 (10:53 -0500)
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>
drivers/scsi/mpt2sas/mpt2sas_ctl.c

index 2d4f85c9d7a1503c22a080cac7528afc04c0a4cd..e0eab0a9bc4caa2ad3c348fd54776f9cb5c82d9c 100644 (file)
@@ -714,8 +714,10 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc,
 
                if (tm_request->TaskType ==
                    MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK) {
-                       if (_ctl_do_task_abort(ioc, &karg, tm_request))
+                       if (_ctl_do_task_abort(ioc, &karg, tm_request)) {
+                               mpt2sas_base_free_smid(ioc, smid);
                                goto out;
+                       }
                }
 
                mutex_lock(&ioc->tm_cmds.mutex);