linux/drivers/scsi/libsas
Wei Fang 354a086d93 scsi:libsas: fix oops caused by assigning a freed task to ->lldd_task
A freed task has been assigned to ->lldd_task when lldd_execute_task()
failed in sas_ata_qc_issue(), and access of ->lldd_task will cause an
oops:

Call trace:
[<ffffffc000641f64>] sas_ata_post_internal+0x6c/0x150
[<ffffffc0006c0d64>] ata_exec_internal_sg+0x32c/0x588
[<ffffffc0006c1048>] ata_exec_internal+0x88/0xe8
[<ffffffc0006c13b4>] ata_dev_read_id+0x204/0x5e0
[<ffffffc0006c17f0>] ata_dev_reread_id+0x60/0xc8
[<ffffffc0006c3098>] ata_dev_revalidate+0x88/0x1e0
[<ffffffc0006cf828>] ata_eh_recover+0xcf8/0x13a8
[<ffffffc0006d075c>] ata_do_eh+0x5c/0xe0
[<ffffffc0006d0828>] ata_std_error_handler+0x48/0x98
[<ffffffc0006d042c>] ata_scsi_port_error_handler+0x474/0x658
[<ffffffc000641b78>] async_sas_ata_eh+0x50/0x80
[<ffffffc0000ca664>] async_run_entry_fn+0x64/0x180
[<ffffffc0000c085c>] process_one_work+0x164/0x438
[<ffffffc0000c0c74>] worker_thread+0x144/0x4b0
[<ffffffc0000c70fc>] kthread+0xfc/0x110

Fix this by reassigning NULL to ->lldd_task in error path.

Signed-off-by: Wei Fang <fangwei1@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2016-07-20 20:53:35 -04:00
..
Kconfig
Makefile Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2011-03-20 18:14:55 -07:00
sas_ata.c scsi:libsas: fix oops caused by assigning a freed task to ->lldd_task 2016-07-20 20:53:35 -04:00
sas_discover.c libsas: Fix Kernel Crash in smp_execute_task 2015-03-06 20:51:29 -08:00
sas_dump.c [SCSI] libsas: suspend / resume support 2012-08-24 13:10:23 +04:00
sas_dump.h
sas_event.c [SCSI] libsas: suspend / resume support 2012-08-24 13:10:23 +04:00
sas_expander.c libsas: remove task_collector mode 2014-11-27 16:40:24 +01:00
sas_host_smp.c SCSI updates on 20120319 2012-03-22 12:55:29 -07:00
sas_init.c libsas: remove task_collector mode 2014-11-27 16:40:24 +01:00
sas_internal.h libsas: remove task_collector mode 2014-11-27 16:40:24 +01:00
sas_phy.c [SCSI] libsas: suspend / resume support 2012-08-24 13:10:23 +04:00
sas_port.c [SCSI] sas: unify the pointlessly separated enums sas_dev_type and sas_device_type 2013-05-10 07:47:52 -07:00
sas_scsi_host.c scsi: remove ->change_queue_type method 2014-12-04 09:55:45 +01:00
sas_task.c scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:31:23 -04:00