From: Jeff Skirvin Date: Fri, 4 Mar 2011 22:06:38 +0000 (-0800) Subject: isci: isci_request_cleanup_completed_loiterer checks task before task_done X-Git-Tag: accepted/tizen/common/20141203.182822~6884^2~1^2~221 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=18d3d72a42a846d46b71131982c51d63eba2b7b3;p=platform%2Fkernel%2Flinux-arm64.git isci: isci_request_cleanup_completed_loiterer checks task before task_done In the condition where outstanding I/Os are being cleaned from the device requests in process list, the cleanup function needs to check that the request is actually a sas-task and not a task management function. Signed-off-by: Jeff Skirvin Signed-off-by: Dan Williams --- diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c index 98204b0..779f6cf 100644 --- a/drivers/scsi/isci/task.c +++ b/drivers/scsi/isci/task.c @@ -631,13 +631,16 @@ static void isci_request_cleanup_completed_loiterer( struct isci_remote_device *isci_device, struct isci_request *isci_request) { - struct sas_task *task = isci_request_access_task(isci_request); - unsigned long flags; + struct sas_task *task; + unsigned long flags; + + task = (isci_request->ttype == io_task) + ? isci_request_access_task(isci_request) + : NULL; dev_dbg(&isci_host->pdev->dev, "%s: isci_device=%p, request=%p, task=%p\n", - __func__, isci_device, isci_request, - isci_request->ttype_ptr.io_task_ptr); + __func__, isci_device, isci_request, task); spin_lock_irqsave(&isci_host->scic_lock, flags); list_del_init(&isci_request->dev_node);