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
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
ahci_ceva.c
ahci_da850.c
ahci_dm816.c
ahci_imx.c
ahci_mtk.c
ahci_mvebu.c
ahci_octeon.c
ahci_platform.c
ahci_qoriq.c
ahci_seattle.c
ahci_st.c
ahci_sunxi.c
ahci_tegra.c
ahci_xgene.c
ata_generic.c
ata_piix.c
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
libata-acpi.c
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-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-trace.c
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.h ata: libata-core: Do not register PM operations for SAS ports 2023-10-10 21:46:42 +02:00
Makefile
pata_acpi.c
pata_ali.c
pata_amd.c
pata_arasan_cf.c
pata_artop.c
pata_atiixp.c
pata_atp867x.c
pata_bk3710.c
pata_buddha.c
pata_cmd64x.c
pata_cmd640.c
pata_cs5520.c
pata_cs5530.c
pata_cs5535.c
pata_cs5536.c ata: pata_cs5536: fix build on 32-bit UML 2025-07-17 18:24:57 +02:00
pata_cypress.c
pata_efar.c
pata_ep93xx.c
pata_falcon.c
pata_ftide010.c
pata_gayle.c
pata_hpt3x2n.c
pata_hpt3x3.c
pata_hpt37x.c
pata_hpt366.c
pata_icside.c
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
pata_ixp4xx_cf.c
pata_jmicron.c
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
pata_mpc52xx.c
pata_mpiix.c
pata_netcell.c
pata_ninja32.c
pata_ns87410.c
pata_ns87415.c
pata_octeon_cf.c
pata_of_platform.c
pata_oldpiix.c
pata_opti.c
pata_optidma.c
pata_palmld.c
pata_pcmcia.c
pata_pdc202xx_old.c
pata_pdc2027x.c
pata_piccolo.c
pata_platform.c
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
pata_rb532_cf.c
pata_rdc.c
pata_rz1000.c
pata_samsung_cf.c
pata_sc1200.c
pata_sch.c
pata_serverworks.c
pata_sil680.c
pata_sis.c
pata_sl82c105.c
pata_triflex.c
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
sata_dwc_460ex.c
sata_fsl.c
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
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
sata_promise.c
sata_promise.h
sata_qstor.c
sata_rcar.c
sata_sil.c ata: sata_sil: Rename sil_blacklist to sil_quirks 2024-11-08 16:20:38 +01:00
sata_sil24.c
sata_sis.c
sata_svw.c
sata_sx4.c ata: sata_sx4: Add error handling in pdc20621_i2c_read() 2025-05-02 07:39:08 +02:00
sata_uli.c
sata_via.c
sata_vsc.c
sis.h