Shaohua Li
5067c0469c
ata: Add a new flag to destinguish sas controller
...
SAS controller has its own tag allocation, which doesn't directly match to ATA
tag, so SAS and SATA have different code path for ata tags. Originally we use
port->scsi_host (98bd4be1 ) to destinguish SAS controller, but libsas set
->scsi_host too, so we can't use it for the destinguish, we add a new flag for
this purpose.
Without this patch, the following oops can happen because scsi-mq uses
a host-wide tag map shared among all devices with some integer tag
values >= ATA_MAX_QUEUE. These unexpectedly high tag values cause
__ata_qc_from_tag() to return NULL, which is then dereferenced in
ata_qc_new_init().
BUG: unable to handle kernel NULL pointer dereference at 0000000000000058
IP: [<ffffffff804fd46e>] ata_qc_new_init+0x3e/0x120
PGD 32adf0067 PUD 32adf1067 PMD 0
Oops: 0002 [#1 ] SMP DEBUG_PAGEALLOC
Modules linked in: iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi igb
i2c_algo_bit ptp pps_core pm80xx libsas scsi_transport_sas sg coretemp
eeprom w83795 i2c_i801
CPU: 4 PID: 1450 Comm: cydiskbench Not tainted 4.0.0-rc3 #1
Hardware name: Supermicro X8DTH-i/6/iF/6F/X8DTH, BIOS 2.1b 05/04/12
task: ffff8800ba86d500 ti: ffff88032a064000 task.ti: ffff88032a064000
RIP: 0010:[<ffffffff804fd46e>] [<ffffffff804fd46e>] ata_qc_new_init+0x3e/0x120
RSP: 0018:ffff88032a067858 EFLAGS: 00010046
RAX: 0000000000000000 RBX: ffff8800ba0d2230 RCX: 000000000000002a
RDX: ffffffff80505ae0 RSI: 0000000000000020 RDI: ffff8800ba0d2230
RBP: ffff88032a067868 R08: 0000000000000201 R09: 0000000000000001
R10: 0000000000000000 R11: 0000000000000000 R12: ffff8800ba0d0000
R13: ffff8800ba0d2230 R14: ffffffff80505ae0 R15: ffff8800ba0d0000
FS: 0000000041223950(0063) GS:ffff88033e480000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000000058 CR3: 000000032a0a3000 CR4: 00000000000006e0
Stack:
ffff880329eee758 ffff880329eee758 ffff88032a0678a8 ffffffff80502dad
ffff8800ba167978 ffff880329eee758 ffff88032bf9c520 ffff8800ba167978
ffff88032bf9c520 ffff88032bf9a290 ffff88032a0678b8 ffffffff80506909
Call Trace:
[<ffffffff80502dad>] ata_scsi_translate+0x3d/0x1b0
[<ffffffff80506909>] ata_sas_queuecmd+0x149/0x2a0
[<ffffffffa0046650>] sas_queuecommand+0xa0/0x1f0 [libsas]
[<ffffffff804ea544>] scsi_dispatch_cmd+0xd4/0x1a0
[<ffffffff804eb50f>] scsi_queue_rq+0x66f/0x7f0
[<ffffffff803e5098>] __blk_mq_run_hw_queue+0x208/0x3f0
[<ffffffff803e54b8>] blk_mq_run_hw_queue+0x88/0xc0
[<ffffffff803e5c74>] blk_mq_insert_request+0xc4/0x130
[<ffffffff803e0b63>] blk_execute_rq_nowait+0x73/0x160
[<ffffffffa0023fca>] sg_common_write+0x3da/0x720 [sg]
[<ffffffffa0025100>] sg_new_write+0x250/0x360 [sg]
[<ffffffffa0025feb>] sg_write+0x13b/0x450 [sg]
[<ffffffff8032ec91>] vfs_write+0xd1/0x1b0
[<ffffffff8032ee54>] SyS_write+0x54/0xc0
[<ffffffff80689932>] system_call_fastpath+0x12/0x17
tj: updated description.
Fixes: 12cb5ce101 ("libata: use blk taging")
Reported-and-tested-by: Tony Battersby <tonyb@cybernetics.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-03-19 14:14:43 -04:00
..
acard-ahci.c
AHCI: Move host activation code into ahci_host_activate()
2014-10-06 11:43:35 -04:00
ahci.c
ahci: Remove Device ID for Intel Sunrise Point PCH
2015-01-13 10:32:29 -05:00
ahci.h
ata: ahci_platform: fix owner module reference mismatch for scsi host
2015-01-28 18:45:23 -05:00
ahci_da850.c
ata: ahci_platform: fix owner module reference mismatch for scsi host
2015-01-28 18:45:23 -05:00
ahci_imx.c
ata: ahci_platform: fix owner module reference mismatch for scsi host
2015-01-28 18:45:23 -05:00
ahci_mvebu.c
ata: ahci_platform: fix owner module reference mismatch for scsi host
2015-01-28 18:45:23 -05:00
ahci_platform.c
ata: ahci_platform: fix owner module reference mismatch for scsi host
2015-01-28 18:45:23 -05:00
ahci_st.c
ata: ahci_platform: fix owner module reference mismatch for scsi host
2015-01-28 18:45:23 -05:00
ahci_sunxi.c
ata: ahci_platform: fix owner module reference mismatch for scsi host
2015-01-28 18:45:23 -05:00
ahci_tegra.c
ata: ahci_platform: fix owner module reference mismatch for scsi host
2015-01-28 18:45:23 -05:00
ahci_xgene.c
Merge branch 'for-3.19-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata into for-3.20
2015-02-09 07:54:41 -05:00
ata_generic.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
ata_piix.c
ata_piix: Add Device IDs for Intel 9 Series PCH
2014-08-28 08:53:40 -04:00
Kconfig
sata_dwc_460ex: disable COMPILE_TEST again
2015-02-10 18:24:57 -08:00
libahci.c
ahci: Use dev_info() to inform about the lack of Device Sleep support
2015-01-09 17:04:12 -05:00
libahci_platform.c
ata: libahci: Use of_platform_device_create only if supported
2015-02-03 07:12:54 -05:00
libata-acpi.c
ACPI and power management updates for 3.15-rc1
2014-04-01 12:48:54 -07:00
libata-core.c
ata: Add a new flag to destinguish sas controller
2015-03-19 14:14:43 -04:00
libata-eh.c
SCSI misc on 20150209
2015-02-11 10:28:45 -08:00
libata-pmp.c
ata: enable quirk from jmicron JMB350 for JMB394
2014-01-31 07:05:44 -05:00
libata-scsi.c
Merge branch 'for-3.20/drivers' of git://git.kernel.dk/linux-block
2015-02-12 14:30:53 -08:00
libata-sff.c
libata: prevent HSM state change race between ISR and PIO
2015-01-19 14:11:23 -05:00
libata-transport.c
libata: Implement ATA_DEV_ZAC
2014-11-05 11:22:06 -05:00
libata-transport.h
libata-zpodd.c
libata: zpodd: eliminate odd_can_poweroff
2014-03-14 11:23:47 -04:00
libata.h
Merge branch 'for-3.20/drivers' of git://git.kernel.dk/linux-block
2015-02-12 14:30:53 -08:00
Makefile
ata: Add support for the Tegra124 SATA controller
2014-07-18 17:52:33 -04:00
pata_acpi.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_ali.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_amd.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_arasan_cf.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_artop.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_at32.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_at91.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_atiixp.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_atp867x.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_bf54x.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_cmd64x.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_cmd640.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_cs5520.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_cs5530.c
ata: Delete unnecessary checks before the function call "pci_dev_put"
2015-02-03 07:04:44 -05:00
pata_cs5535.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_cs5536.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_cypress.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_efar.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_ep93xx.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_hpt3x2n.c
ata: delete non-required instances of include <linux/init.h>
2014-02-13 16:40:56 -05:00
pata_hpt3x3.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_hpt37x.c
ata: delete non-required instances of include <linux/init.h>
2014-02-13 16:40:56 -05:00
pata_hpt366.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_icside.c
pata_imx.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_isapnp.c
pata_it821x.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_it8213.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_ixp4xx_cf.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_jmicron.c
ata: Disabling the async PM for JMicron chip 363/361
2014-09-01 08:38:06 -04:00
pata_legacy.c
pata_legacy: Remove dead code
2014-03-11 08:30:53 -04:00
pata_macio.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_marvell.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_mpc52xx.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_mpiix.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_netcell.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_ninja32.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_ns87410.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_ns87415.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_octeon_cf.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_of_platform.c
ata: pata_platform: fix owner module reference mismatch for scsi host
2015-01-28 18:45:23 -05:00
pata_oldpiix.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_opti.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_optidma.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_palmld.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_pcmcia.c
ata: delete non-required instances of include <linux/init.h>
2014-02-13 16:40:56 -05:00
pata_pdc202xx_old.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_pdc2027x.c
pata_pdc2027x: Use 64-bit timekeeping
2015-01-27 11:06:19 -05:00
pata_piccolo.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_platform.c
ata: pata_platform: fix owner module reference mismatch for scsi host
2015-01-28 18:45:23 -05:00
pata_pxa.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_radisys.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_rb532_cf.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_rdc.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_rz1000.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_samsung_cf.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
pata_sc1200.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_scc.c
pata_scc: propagate return value of scc_wait_after_reset
2014-08-18 09:15:21 -04:00
pata_sch.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_serverworks.c
pata_serverworks: disable 64-KB DMA transfers on Broadcom OSB4 IDE Controller
2014-10-07 17:10:14 -04:00
pata_sil680.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_sis.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_sl82c105.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_triflex.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pata_via.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
pdc_adma.c
ata: delete non-required instances of include <linux/init.h>
2014-02-13 16:40:56 -05:00
sata_dwc_460ex.c
sata_dwc_460ex: convert to devm_kzalloc in ->probe()
2015-01-08 08:30:48 -05:00
sata_fsl.c
sata-fsl: Apply link speed limits
2015-03-02 12:08:43 -05:00
sata_highbank.c
ata: drop owner assignment from platform_drivers
2014-10-20 16:20:17 +02:00
sata_inic162x.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
sata_mv.c
sata_mv: Delete unnecessary checks before the function call "phy_power_off"
2015-02-03 07:05:04 -05:00
sata_nv.c
scsi: drop reason argument from ->change_queue_depth
2014-11-24 14:45:27 +01:00
sata_promise.c
ata: delete non-required instances of include <linux/init.h>
2014-02-13 16:40:56 -05:00
sata_promise.h
sata_qstor.c
ata: delete non-required instances of include <linux/init.h>
2014-02-13 16:40:56 -05:00
sata_rcar.c
sata_rcar: extend PM methods
2015-01-19 09:04:37 -05:00
sata_sil.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
sata_sil24.c
Merge branch 'for-3.20/drivers' of git://git.kernel.dk/linux-block
2015-02-12 14:30:53 -08:00
sata_sis.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
sata_svw.c
ata: delete non-required instances of include <linux/init.h>
2014-02-13 16:40:56 -05:00
sata_sx4.c
ata: remove superfluous casts
2014-03-26 12:36:53 -04:00
sata_uli.c
ata: delete non-required instances of include <linux/init.h>
2014-02-13 16:40:56 -05:00
sata_via.c
ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
2014-05-09 22:37:49 -04:00
sata_vsc.c
ata: delete non-required instances of include <linux/init.h>
2014-02-13 16:40:56 -05:00
sis.h