android_kernel_motorola_sm6375/drivers/ata
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Niklas Cassel ce9e6c5f2a ata: libata-scsi: Fix system suspend for a security locked drive
[ Upstream commit b11890683380a36b8488229f818d5e76e8204587 ]

Commit cf3fc037623c ("ata: libata-scsi: Fix ata_to_sense_error() status
handling") fixed ata_to_sense_error() to properly generate sense key
ABORTED COMMAND (without any additional sense code), instead of the
previous bogus sense key ILLEGAL REQUEST with the additional sense code
UNALIGNED WRITE COMMAND, for a failed command.

However, this broke suspend for Security locked drives (drives that have
Security enabled, and have not been Security unlocked by boot firmware).

The reason for this is that the SCSI disk driver, for the Synchronize
Cache command only, treats any sense data with sense key ILLEGAL REQUEST
as a successful command (regardless of ASC / ASCQ).

After commit cf3fc037623c ("ata: libata-scsi: Fix ata_to_sense_error()
status handling") the code that treats any sense data with sense key
ILLEGAL REQUEST as a successful command is no longer applicable, so the
command fails, which causes the system suspend to be aborted:

  sd 1:0:0:0: PM: dpm_run_callback(): scsi_bus_suspend returns -5
  sd 1:0:0:0: PM: failed to suspend async: error -5
  PM: Some devices failed to suspend, or early wake event detected

To make suspend work once again, for a Security locked device only,
return sense data LOGICAL UNIT ACCESS NOT AUTHORIZED, the actual sense
data which a real SCSI device would have returned if locked.
The SCSI disk driver treats this sense data as a successful command.

Cc: stable@vger.kernel.org
Reported-by: Ilia Baryshnikov <qwelias@gmail.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220704
Fixes: cf3fc037623c ("ata: libata-scsi: Fix ata_to_sense_error() status handling")
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Niklas Cassel <cassel@kernel.org>
[ Adjust context ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-12-03 12:45:21 +01:00
..
acard-ahci.c ata: make qc_prep return ata_completion_errors 2020-10-01 13:18:26 +02:00
ahci.c ahci: add PCI ID for Marvell 88SE9215 SATA Controller 2025-05-02 07:39:10 +02:00
ahci.h ahci: add 43-bit DMA address quirk for ASMedia ASM1061 controllers 2024-03-01 13:13:33 +01:00
ahci_brcm.c ata: ahci_brcm: Add back regulators management 2021-03-04 10:26:23 +01:00
ahci_ceva.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
ahci_da850.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 45 2019-05-24 17:27:12 +02:00
ahci_dm816.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 45 2019-05-24 17:27:12 +02:00
ahci_imx.c ata: ahci-imx: Fix MODULE_ALIAS 2022-10-29 10:20:34 +02:00
ahci_mtk.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
ahci_mvebu.c ata: ahci: mvebu: Make SATA PHY optional for Armada 3720 2020-11-01 12:01:05 +01:00
ahci_octeon.c
ahci_platform.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 45 2019-05-24 17:27:12 +02:00
ahci_qoriq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 45 2019-05-24 17:27:12 +02:00
ahci_seattle.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 235 2019-06-19 17:09:07 +02:00
ahci_st.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ahci_sunxi.c ata: ahci_sunxi: Disable DIPM 2021-07-19 08:53:15 +02:00
ahci_tegra.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
ahci_xgene.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13 2019-05-21 11:28:45 +02:00
ata_generic.c
ata_piix.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
Kconfig ata: Fix SATA_MOBILE_LPM_POLICY description in Kconfig 2025-08-28 16:21:35 +02:00
libahci.c ata: libahci: clear pending interrupt status 2023-10-10 21:46:36 +02:00
libahci_platform.c ata: libahci_platform: Sanity check the DT child nodes number 2022-10-26 13:22:56 +02:00
libata-acpi.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
libata-core.c ata: libata: Fix memory leak for error path in ata_host_alloc() 2024-09-12 11:03:50 +02:00
libata-eh.c ata: libata-eh: Do not use ATAPI DMA for a device limited to PIO mode 2025-05-02 07:39:10 +02:00
libata-pmp.c libata: Return correct status in sata_pmp_eh_recover_pm() when ATA_DFLAG_DETACH is set 2020-04-17 10:50:22 +02:00
libata-scsi.c ata: libata-scsi: Fix system suspend for a security locked drive 2025-12-03 12:45:21 +01:00
libata-sff.c libata: fix ata_pio_sector for CONFIG_HIGHMEM 2021-08-12 13:21:04 +02:00
libata-trace.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
libata-transport.c ata: libata-core: Do not register PM operations for SAS ports 2023-10-10 21:46:42 +02:00
libata-transport.h
libata-zpodd.c libata: zpodd: Fix small read overflow in zpodd_get_mech_type() 2019-07-29 16:00:14 -06:00
libata.h ata: libata-core: Do not register PM operations for SAS ports 2023-10-10 21:46:42 +02:00
Makefile ata: add Buddha PATA controller driver 2019-02-08 06:32:01 -07:00
pata_acpi.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_ali.c
pata_amd.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_arasan_cf.c pata_arasan_cf: fix IRQ check 2021-05-14 09:44:24 +02:00
pata_artop.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_atiixp.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_atp867x.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
pata_bk3710.c
pata_buddha.c ata/pata_buddha: Probe via modalias instead of initcall 2019-08-23 06:58:50 -06:00
pata_cmd64x.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_cmd640.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_cs5520.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
pata_cs5530.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
pata_cs5535.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
pata_cs5536.c ata: pata_cs5536: fix build on 32-bit UML 2025-07-17 18:24:57 +02:00
pata_cypress.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_efar.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_ep93xx.c pata_ep93xx: fix deferred probing 2021-07-14 16:53:21 +02:00
pata_falcon.c
pata_ftide010.c ata: pata_ftide010: Add missing MODULE_DESCRIPTION 2023-09-23 11:00:00 +02:00
pata_gayle.c
pata_hpt3x2n.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_hpt3x3.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
pata_hpt37x.c ata: pata_hpt37x: fix PCI clock detection 2022-03-08 19:07:46 +01:00
pata_hpt366.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_icside.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_imx.c
pata_isapnp.c ata: pata_isapnp: Add missing error check for devm_ioport_map() 2023-12-08 08:44:23 +01:00
pata_it821x.c
pata_it8213.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_ixp4xx_cf.c pata_ipx4xx_cf: Fix unsigned comparison with less than zero 2023-01-18 11:40:59 +01:00
pata_jmicron.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_legacy.c ata: pata_legacy: make legacy_exit() work again 2024-06-16 13:28:49 +02:00
pata_macio.c ata: pata_macio: Use WARN instead of BUG 2024-09-12 11:03:55 +02:00
pata_marvell.c ata: pata_marvell: Check the 'bmdma_addr' beforing reading 2022-04-27 13:50:48 +02:00
pata_mpc52xx.c
pata_mpiix.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_netcell.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_ninja32.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
pata_ns87410.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
pata_ns87415.c ata: pata_ns87415: mark ns87560_tf_read static 2023-08-11 11:53:49 +02:00
pata_octeon_cf.c ata: pata_octeon_cf: Fix refcount leak in octeon_cf_probe 2022-06-14 18:11:57 +02:00
pata_of_platform.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
pata_oldpiix.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_opti.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_optidma.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_palmld.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
pata_pcmcia.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
pata_pdc202xx_old.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_pdc2027x.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
pata_piccolo.c
pata_platform.c ata: pata_platform: Add IRQF_SHARED to IRQ flags 2019-02-08 06:42:55 -07:00
pata_pxa.c ata: pata_pxa: Fix potential NULL pointer dereference in pxa_ata_probe() 2025-05-02 07:39:08 +02:00
pata_radisys.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_rb532_cf.c pata_rb532_cf: fix deferred probing 2021-07-14 16:53:20 +02:00
pata_rdc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
pata_rz1000.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_samsung_cf.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
pata_sc1200.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
pata_sch.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 300 2019-06-05 17:37:00 +02:00
pata_serverworks.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_sil680.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
pata_sis.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_sl82c105.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_triflex.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
pata_via.c ata: pata_via: Force PIO for ATAPI devices on VT6415/VT6330 2025-06-27 11:02:51 +01:00
pdc_adma.c ata: make qc_prep return ata_completion_errors 2020-10-01 13:18:26 +02:00
sata_dwc_460ex.c ata: sata_dwc_460ex: Fix crash due to OOB write 2022-04-15 14:18:39 +02:00
sata_fsl.c sata_fsl: fix warning in remove_proc_entry when rmmod sata_fsl 2021-12-08 09:01:11 +01:00
sata_gemini.c ata: sata_gemini: Check clk_enable() result 2024-05-17 11:43:51 +02:00
sata_gemini.h
sata_highbank.c ata: sata_highbank: fix OF node reference leak in highbank_initialize_phys() 2024-12-19 18:05:02 +01:00
sata_inic162x.c ata: make qc_prep return ata_completion_errors 2020-10-01 13:18:26 +02:00
sata_mv.c ata: sata_mv: Fix PCI device ID table declaration compilation warning 2024-04-13 12:51:36 +02:00
sata_nv.c ata: sata_nv: Fix retrieving of active qcs 2020-11-05 11:43:12 +01:00
sata_promise.c ata: make qc_prep return ata_completion_errors 2020-10-01 13:18:26 +02:00
sata_promise.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
sata_qstor.c ata: make qc_prep return ata_completion_errors 2020-10-01 13:18:26 +02:00
sata_rcar.c ata: sata_rcar: Fix DMA boundary mask 2020-11-01 12:01:06 +01:00
sata_sil.c ata: sata_sil: Rename sil_blacklist to sil_quirks 2024-11-08 16:20:38 +01:00
sata_sil24.c ata: make qc_prep return ata_completion_errors 2020-10-01 13:18:26 +02:00
sata_sis.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
sata_svw.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
sata_sx4.c ata: sata_sx4: Add error handling in pdc20621_i2c_read() 2025-05-02 07:39:08 +02:00
sata_uli.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
sata_via.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
sata_vsc.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
sis.h