scsi: iscsi: Fix iscsi_task use after free
authorMike Christie <michael.christie@oracle.com>
Mon, 4 Oct 2021 21:06:08 +0000 (16:06 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 5 Oct 2021 03:40:11 +0000 (23:40 -0400)
commit258aad75c62146453d03028a44f2f1590d58e1f6
treee73565d7042a579bd43f03da4445ed91f77af6e7
parent69a3a7bc7239170557dfc2c4ad5786a0c3d8759a
scsi: iscsi: Fix iscsi_task use after free

Commit d39df158518c ("scsi: iscsi: Have abort handler get ref to conn")
added iscsi_get_conn()/iscsi_put_conn() calls during abort handling but
then also changed the handling of the case where we detect an already
completed task where we now end up doing a goto to the common put/cleanup
code. This results in a iscsi_task use after free, because the common
cleanup code will do a put on the iscsi_task.

This reverts the goto and moves the iscsi_get_conn() to after we've checked
if the iscsi_task is valid.

Link: https://lore.kernel.org/r/20211004210608.9962-1-michael.christie@oracle.com
Fixes: d39df158518c ("scsi: iscsi: Have abort handler get ref to conn")
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/libiscsi.c