scsi: hisi_sas: release SMP slot in lldd_abort_task
authorXiang Chen <chenxiang66@hisilicon.com>
Wed, 22 Mar 2017 17:25:36 +0000 (01:25 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 23 Mar 2017 15:12:02 +0000 (11:12 -0400)
commitccbfe5a05a5be7670d1b91ad07d8b1f3b9dbd45e
tree937cb19252371555bfd00b98c21d238b2dbc04be
parent8b05ad6a9dbc4306c8eaf0f5269206647ed1ad7e
scsi: hisi_sas: release SMP slot in lldd_abort_task

When an SMP task timeouts, it will call lldd_abort_task to release the
associated slot, and then will release the sas_task.

Currently in lldd_abort_task, if we fail to internally abort IO, then
the slot of SMP IO is not released, but sas_task will still be later
released, so the slot's sas_task is NULL, which will cause NULL pointer
when hisi_sas_slot_task_free happens later.

To resolve, check the return value of internal abort, and release the
slot if it failed.

Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/hisi_sas/hisi_sas_main.c