Skip to content

Commit 2290dca

Browse files
Damien Le Moalgregkh
authored andcommitted
scsi: pm8001: Fix task leak in pm8001_send_abort_all()
[ Upstream commit f90a748 ] In pm8001_send_abort_all(), make sure to free the allocated sas task if pm8001_tag_alloc() or pm8001_mpi_build_cmd() fail. Link: https://lore.kernel.org/r/20220220031810.738362-21-damien.lemoal@opensource.wdc.com Reviewed-by: John Garry <john.garry@huawei.com> Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent ece79aa commit 2290dca

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

drivers/scsi/pm8001/pm8001_hwi.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1767,7 +1767,6 @@ static void pm8001_send_abort_all(struct pm8001_hba_info *pm8001_ha,
17671767
}
17681768

17691769
task = sas_alloc_slow_task(GFP_ATOMIC);
1770-
17711770
if (!task) {
17721771
pm8001_dbg(pm8001_ha, FAIL, "cannot allocate task\n");
17731772
return;
@@ -1776,8 +1775,10 @@ static void pm8001_send_abort_all(struct pm8001_hba_info *pm8001_ha,
17761775
task->task_done = pm8001_task_done;
17771776

17781777
res = pm8001_tag_alloc(pm8001_ha, &ccb_tag);
1779-
if (res)
1778+
if (res) {
1779+
sas_free_task(task);
17801780
return;
1781+
}
17811782

17821783
ccb = &pm8001_ha->ccb_info[ccb_tag];
17831784
ccb->device = pm8001_ha_dev;
@@ -1794,8 +1795,10 @@ static void pm8001_send_abort_all(struct pm8001_hba_info *pm8001_ha,
17941795

17951796
ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort,
17961797
sizeof(task_abort), 0);
1797-
if (ret)
1798+
if (ret) {
1799+
sas_free_task(task);
17981800
pm8001_tag_free(pm8001_ha, ccb_tag);
1801+
}
17991802

18001803
}
18011804

0 commit comments

Comments
 (0)