linux/drivers
Niklas Cassel 4539005b91 Revert "ata: libata-scsi: Honor the D_SENSE bit for CK_COND=1 and no error"
commit fa0db8e568 upstream.

This reverts commit 28ab976911.

Sense data can be in either fixed format or descriptor format.

SAT-6 revision 1, "10.4.6 Control mode page", defines the D_SENSE bit:
"The SATL shall support this bit as defined in SPC-5 with the following
exception: if the D_ SENSE bit is set to zero (i.e., fixed format sense
data), then the SATL should return fixed format sense data for ATA
PASS-THROUGH commands."

The libata SATL has always kept D_SENSE set to zero by default. (It is
however possible to change the value using a MODE SELECT SG_IO command.)

Failed ATA PASS-THROUGH commands correctly respected the D_SENSE bit,
however, successful ATA PASS-THROUGH commands incorrectly returned the
sense data in descriptor format (regardless of the D_SENSE bit).

Commit 28ab976911 ("ata: libata-scsi: Honor the D_SENSE bit for
CK_COND=1 and no error") fixed this bug for successful ATA PASS-THROUGH
commands.

However, after commit 28ab976911 ("ata: libata-scsi: Honor the D_SENSE
bit for CK_COND=1 and no error"), there were bug reports that hdparm,
hddtemp, and udisks were no longer working as expected.

These applications incorrectly assume the returned sense data is in
descriptor format, without even looking at the RESPONSE CODE field in the
returned sense data (to see which format the returned sense data is in).

Considering that there will be broken versions of these applications around
roughly forever, we are stuck with being bug compatible with older kernels.

Cc: stable@vger.kernel.org # 4.19+
Reported-by: Stephan Eisvogel <eisvogel@seitics.de>
Reported-by: Christian Heusel <christian@heusel.eu>
Closes: https://lore.kernel.org/linux-ide/0bf3f2f0-0fc6-4ba5-a420-c0874ef82d64@heusel.eu/
Fixes: 28ab976911 ("ata: libata-scsi: Honor the D_SENSE bit for CK_COND=1 and no error")
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20240813131900.1285842-2-cassel@kernel.org
Signed-off-by: Niklas Cassel <cassel@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-08-19 06:00:07 +02:00
..
accessibility speakup: Fix sizeof() vs ARRAY_SIZE() bug 2024-06-12 11:02:55 +02:00
acpi ACPI: SBS: manage alarm sysfs attribute through psy core 2024-08-14 13:52:45 +02:00
amba
android binder: fix hang of unregistered readers 2024-08-03 08:49:37 +02:00
ata Revert "ata: libata-scsi: Honor the D_SENSE bit for CK_COND=1 and no error" 2024-08-19 06:00:07 +02:00
atm atm: idt77252: fix a memleak in open_card_ubr0 2024-02-16 19:06:26 +01:00
auxdisplay auxdisplay: ht16k33: Drop reference after LED registration 2024-08-03 08:49:51 +02:00
base driver core: Fix uevent_show() vs driver detach race 2024-08-14 13:52:57 +02:00
bcma
block rbd: don't assume RBD_LOCK_STATE_LOCKED for exclusive mappings 2024-08-03 08:49:45 +02:00
bluetooth Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x13d3:0x3591 2024-08-03 08:49:45 +02:00
bus bus: mhi: host: pci_generic: add support for Telit FE990 modem 2024-08-14 13:52:49 +02:00
cdrom cdrom: rearrange last_media_change check to avoid unintentional overflow 2024-07-11 12:47:10 +02:00
char hwrng: amd - Convert PCIBIOS_* return codes to errnos 2024-08-03 08:49:36 +02:00
clk clk: davinci: da8xx-cfgchip: Initialize clk_init_data before use 2024-08-03 08:49:38 +02:00
clocksource clocksource/drivers/sh_cmt: Address race condition for clock events 2024-08-14 13:52:45 +02:00
comedi comedi: vmk80xx: fix incomplete endpoint checking 2024-04-27 17:07:14 +02:00
connector
counter counter: ti-eqep: enable clock at probe 2024-07-05 09:31:53 +02:00
cpufreq cpufreq: qcom-nvmem: fix memory leaks in probe error paths 2024-08-11 12:35:53 +02:00
cpuidle cpuidle: Avoid potential overflow in integer multiplication 2024-04-13 13:04:54 +02:00
crypto crypto: qat - extend scope of lock in adf_cfg_add_key_value_param() 2024-08-03 08:49:21 +02:00
cxl cxl/pci: Fix disabling memory if DVSEC CXL Range does not match a CFMWS window 2024-03-01 13:26:31 +01:00
dax
dca
devfreq
dio
dma dmaengine: ti: k3-udma: Fix BCHAN count with UHC and HC channels 2024-08-03 08:49:47 +02:00
dma-buf dma-buf/sw-sync: don't enable IRQ from sync_print_obj() 2024-06-12 11:03:55 +02:00
edac EDAC, i10nm: make skx_common.o a separate module 2024-08-03 08:48:52 +02:00
eisa
extcon extcon: max8997: select IRQ_DOMAIN instead of depending on it 2024-06-12 11:03:41 +02:00
firewire firewire: nosy: ensure user_length is taken into account when fetching packet contents 2024-05-17 11:56:16 +02:00
firmware x86/efistub: Revert to heap allocated boot_params for PE entrypoint 2024-08-03 08:49:30 +02:00
fpga fpga: region: add owner module and take its refcount 2024-06-12 11:03:39 +02:00
fsi
gnss
gpio gpio: pca953x: fix pca953x_irq_bus_sync_unlock race 2024-07-25 09:49:15 +02:00
gpu drm/i915/gem: Adjust vma offset for framebuffer mmap offset 2024-08-19 06:00:06 +02:00
greybus greybus: Fix use-after-free bug in gb_interface_release due to race condition. 2024-06-21 14:36:00 +02:00
hid HID: wacom: Modify pen IDs 2024-08-11 12:36:00 +02:00
hsi
hte
hv Drivers: hv: vmbus: Don't free ring buffers that couldn't be re-encrypted 2024-05-17 11:56:08 +02:00
hwmon hwmon: (max6697) Fix swapped temp{1,8} critical alarms 2024-08-03 08:48:56 +02:00
hwspinlock
hwtracing coresight: Fix ref leak when of_coresight_parse_endpoint() fails 2024-08-03 08:49:18 +02:00
i2c i2c: qcom-geni: fix missing clk_disable_unprepare() and geni_se_resources_off() 2024-08-14 13:53:03 +02:00
i3c i3c: master: svc: fix invalidate IBI type and miss call client IBI handler 2024-06-16 13:41:41 +02:00
idle
iio iio: frequency: adrf6780: rm clk provider include 2024-08-03 08:49:17 +02:00
infiniband RDMA/iwcm: Fix a use-after-free related to destroying CM IDs 2024-08-03 08:49:43 +02:00
input Input: elan_i2c - do not leave interrupt disabled on suspend failure 2024-08-03 08:49:21 +02:00
interconnect interconnect: qcom: qcm2290: Fix mas_snoc_bimc RPM master ID 2024-08-03 08:49:19 +02:00
iommu iommu: sprd: Avoid NULL deref in sprd_iommu_hw_en 2024-08-03 08:49:53 +02:00
ipack
irqchip irqchip/xilinx: Fix shift out of bounds 2024-08-14 13:52:58 +02:00
isdn mISDN: Fix a use after free in hfcmulti_tx() 2024-08-03 08:49:50 +02:00
leds leds: triggers: Flush pending brightness before activating trigger 2024-08-11 12:35:53 +02:00
macintosh macintosh/therm_windtunnel: fix module unload. 2024-08-03 08:49:22 +02:00
mailbox mailbox: arm_mhuv2: Fix a bug for mhuv2_sender_interrupt 2024-02-05 20:12:58 +00:00
mcb
md md/raid5: avoid BUG_ON() while continue reshape after reassembling 2024-08-14 13:52:45 +02:00
media media: Revert "media: dvb-usb: Fix unexpected infinite loop in dvb_usb_read_remote_control()" 2024-08-19 06:00:07 +02:00
memory memory: fsl_ifc: Make FSL_IFC config visible and selectable 2024-08-03 08:48:58 +02:00
memstick
message
mfd mfd: omap-usb-tll: Use struct_size to allocate tll 2024-08-03 08:49:15 +02:00
misc mei: demote client disconnect warning on suspend to debug 2024-07-25 09:49:12 +02:00
mmc mmc: sdhci: Do not lock spinlock around mmc_gpio_get_ro() 2024-07-05 09:31:53 +02:00
most
mtd ubi: eba: properly rollback inside self_check_eba 2024-08-03 08:49:38 +02:00
mux
net can: mcp251xfd: tef: update workaround for erratum DS80000789E 6 of mcp2518fd 2024-08-14 13:52:47 +02:00
nfc nfc/nci: Add the inconsistency check between the input data length and count 2024-07-11 12:47:18 +02:00
ntb NTB: fix possible name leak in ntb_register_device() 2024-03-26 18:20:49 -04:00
nubus
nvdimm
nvme nvme/pci: Add APST quirk for Lenovo N60z laptop 2024-08-19 06:00:06 +02:00
nvmem nvmem: core: only change name to fram for current attribute 2024-07-18 13:18:40 +02:00
of of/irq: Disable "interrupt-map" parsing for PASEMI Nemo 2024-07-25 09:49:20 +02:00
opp OPP: ti: Fix ti_opp_supply_probe wrong return values 2024-08-03 08:48:58 +02:00
parisc
parport dev/parport: fix the array out-of-bounds risk 2024-08-03 08:49:37 +02:00
pci PCI/DPC: Fix use-after-free on concurrent DPC and hot-removal 2024-08-03 08:49:46 +02:00
pcmcia
peci
perf drivers/perf: riscv: Reset the counter to hpmevent mapping while starting cpus 2024-07-25 09:49:18 +02:00
phy phy: cadence-torrent: Check return value on register read 2024-08-03 08:49:47 +02:00
pinctrl pinctrl: renesas: r8a779g0: Fix TPU suffixes 2024-08-03 08:49:28 +02:00
platform platform/x86/intel/ifs: Initialize union ifs_status to zero 2024-08-14 13:52:43 +02:00
pnp
power power: supply: axp288_charger: Round constant_charge_voltage writes down 2024-08-14 13:52:59 +02:00
powercap powercap: dtpm_cpu: Fix error check against freq_qos_add_request() 2024-03-26 18:20:36 -04:00
pps
ps3
ptp ptp: fix integer overflow in max_vclocks_store 2024-06-27 13:46:19 +02:00
pwm pwm: atmel-tcb: Fix race condition and convert to guards 2024-08-03 08:48:55 +02:00
rapidio
ras
regulator regulator: bd71815: fix ramp values 2024-06-27 13:46:21 +02:00
remoteproc remoteproc: imx_rproc: Fix refcount mistake in imx_rproc_addr_init 2024-08-03 08:49:44 +02:00
reset
rpmsg
rtc rtc: isl1208: Fix return value of nvmem callbacks 2024-08-03 08:49:42 +02:00
s390 s390/sclp: Prevent release of buffer in I/O 2024-08-14 13:52:49 +02:00
sbus
scsi scsi: mpi3mr: Avoid IOMMU page faults on REPORT ZONES 2024-08-14 13:52:56 +02:00
sh
siox
slimbus slimbus: qcom-ngd-ctrl: Add timeout for wait operation 2024-05-17 11:56:20 +02:00
soc drivers: soc: xilinx: check return status of get_api_version() 2024-08-03 08:49:35 +02:00
soundwire soundwire: cadence: fix invalid PDI offset 2024-06-12 11:03:34 +02:00
spi spi: spi-fsl-lpspi: Fix scldiv calculation 2024-08-14 13:52:54 +02:00
spmi spmi: hisi-spmi-controller: Do not override device identifier 2024-06-21 14:35:55 +02:00
ssb
staging greybus: arche-ctrl: move device table to its right location 2024-06-12 11:03:35 +02:00
target scsi: target: Fix SELinux error when systemd-modules loads the target module 2024-05-17 11:56:07 +02:00
tc
tee tee: optee: ffa: Fix missing-field-initializers warning 2024-07-25 09:49:17 +02:00
thermal thermal/drivers/qcom/lmh: Check for SCM availability at probe 2024-06-16 13:41:33 +02:00
thunderbolt thunderbolt: debugfs: Fix margin debugfs node creation condition 2024-06-21 14:35:44 +02:00
tty serial: core: check uartclk for zero to avoid divide by zero 2024-08-14 13:52:58 +02:00
ufs scsi: ufs: core: Fix hba->last_dme_cmd_tstamp timestamp updating logic 2024-08-14 13:52:56 +02:00
uio uio_hv_generic: Don't free decrypted memory 2024-05-17 11:56:08 +02:00
usb usb: gadget: u_audio: Check return codes from usb_ep_enable and config_ep_by_speed. 2024-08-14 13:52:56 +02:00
vdpa vduse: Temporarily fail if control queue feature requested 2024-07-05 09:31:48 +02:00
vfio VFIO: Add the SPR_DSA and SPR_IAX devices to the denylist 2024-05-17 11:56:23 +02:00
vhost vhost-vdpa: switch to use vmf_insert_pfn() in the fault handler 2024-08-14 13:52:57 +02:00
video fbdev: savage: Handle err return when savagefb_check_var failed 2024-06-16 13:41:36 +02:00
virt drivers/virt/acrn: fix PFNMAP PTE checks in acrn_vm_ram_map() 2024-06-12 11:03:30 +02:00
virtio virtio: delete vq in vp_find_vqs_msix() when request_irq() fails 2024-06-12 11:03:52 +02:00
vlynq
w1
watchdog watchdog: rzg2l_wdt: Check return status of pm_runtime_put() 2024-08-03 08:49:48 +02:00
xen drivers/xen: Improve the late XenStore init protocol 2024-06-12 11:03:53 +02:00
zorro
Kconfig
Makefile