linux/drivers/scsi/isci
Jeff Skirvin a5fde22536 isci: fix completion / abort path.
Corrected use of the request state_lock in the completion callback.

In the case where an abort (or reset) thread is trying to terminate an
I/O request, it sets the request state to "aborting" (or "terminating")
if the state is still "starting".  One of the bugs was to never set the
state to "completed".  Another was to not correctly recognize the
situation where the I/O had completed but the sas_task was still pending
callback to task_done - this was typically a problem in the LUN and
device reset cases.

It is now possible that we leave isci_task_abort_task() with
request->io_request_completion pointing to localy allocated
aborted_io_completion struct. It may result in a system crash.

Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Maciej Trela <Maciej.Trela@intel.com>
Signed-off-by: Jacek Danecki <Jacek.Danecki@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2011-07-03 03:55:29 -07:00
..
core isci: pad stp and smp request sizes 2011-07-03 03:55:29 -07:00
firmware isci: Intel(R) C600 Series Chipset Storage Control Unit Driver 2011-07-02 22:56:22 -07:00
events.c isci: replace isci_remote_device completion with event queue 2011-07-03 03:55:29 -07:00
events.h isci: rework timer api 2011-07-03 03:55:28 -07:00
host.c isci: Changes in isci_host_completion_routine 2011-07-03 03:55:29 -07:00
host.h isci: Changes in isci_host_completion_routine 2011-07-03 03:55:29 -07:00
init.c isci: preallocate remote devices 2011-07-03 03:55:29 -07:00
isci.h isci: cleanup debug leftovers in isci.h 2011-07-03 03:55:29 -07:00
Makefile isci: Removing deprecated functions 2011-07-03 03:55:28 -07:00
phy.c isci: Adding support for phy enable and disable 2011-07-03 03:55:29 -07:00
phy.h isci: Intel(R) C600 Series Chipset Storage Control Unit Driver 2011-07-02 22:56:22 -07:00
port.c isci: replace remote_device_lock with scic_lock 2011-07-03 03:55:29 -07:00
port.h isci: replace remote_device_lock with scic_lock 2011-07-03 03:55:29 -07:00
remote_device.c isci: replace remote_device_lock with scic_lock 2011-07-03 03:55:29 -07:00
remote_device.h isci: preallocate remote devices 2011-07-03 03:55:29 -07:00
request.c isci: fix completion / abort path. 2011-07-03 03:55:29 -07:00
request.h isci: kill SCI_IO_REQUEST_DATA_DIRECTION 2011-07-03 00:36:31 -07:00
sata.c isci: remove sci_device_handle 2011-07-03 03:55:29 -07:00
sata.h isci: Intel(R) C600 Series Chipset Storage Control Unit Driver 2011-07-02 22:56:22 -07:00
sci_environment.h isci: clean up remaining silicon revision ifdefs in phy init 2011-07-03 03:55:28 -07:00
task.c isci: fix completion / abort path. 2011-07-03 03:55:29 -07:00
task.h isci: Intel(R) C600 Series Chipset Storage Control Unit Driver 2011-07-02 22:56:22 -07:00
timers.c isci: rework timer api 2011-07-03 03:55:28 -07:00
timers.h isci: rework timer api 2011-07-03 03:55:28 -07:00