1
linux/drivers/ata
Mark Lord 2b06719153 libata bugfix: HDIO_DRIVE_TASK
I was trying to use HDIO_DRIVE_TASK for something today,
and discovered that the libata implementation does not copy
over the upper four LBA bits from args[6].

This is serious, as any tools using this ioctl would have their
commands applied to the wrong sectors on the drive, possibly resulting
in disk corruption.

Ideally, newer apps should use SG_IO/ATA_16 directly,
avoiding this bug.  But with libata poised to displace drivers/ide,
better compatibility here is a must.

This patch fixes libata to use the upper four LBA bits passed
in from the ioctl.

The original drivers/ide implementation copies over all bits
except for the master/slave select bit.  With this patch,
libata will copy only the four high-order LBA bits,
just in case there are assumptions elsewhere in libata (?).

Signed-Off-By:  Mark Lord <mlord@pobox.com>

Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-02-21 04:58:17 -05:00
..
ahci.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ata_generic.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
ata_piix.c libata: kill ATA_ENABLE_PATA 2007-02-09 17:39:40 -05:00
Kconfig libata: PATA driver for Celleb 2007-02-21 04:58:16 -05:00
libata-acpi.c [PATCH] libata: wrong sizeof for BUFFER 2007-02-16 13:32:41 -05:00
libata-core.c libata: kill ATA_DNXFER_ANY 2007-02-21 04:58:17 -05:00
libata-eh.c libata: put some intelligence into EH speed down sequence 2007-02-21 04:58:16 -05:00
libata-scsi.c libata bugfix: HDIO_DRIVE_TASK 2007-02-21 04:58:17 -05:00
libata-sff.c libata: add another IRQ calls (core and headers) 2007-02-09 17:39:38 -05:00
libata.h libata: kill ATA_DNXFER_ANY 2007-02-21 04:58:17 -05:00
Makefile libata: PATA driver for Celleb 2007-02-21 04:58:16 -05:00
pata_ali.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_amd.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_artop.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_atiixp.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_cmd64x.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_cs5520.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_cs5530.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_cs5535.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_cypress.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_efar.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_hpt3x2n.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_hpt3x3.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_hpt37x.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_hpt366.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_isapnp.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_it821x.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_it8213.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_ixp4xx_cf.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_jmicron.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_legacy.c libata: Add a host flag to indicate lack of IORDY capability 2007-02-15 18:04:01 -05:00
pata_marvell.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_mpc52xx.c [POWERPC] Fixup mp5200 drivers to match device tree changes 2007-02-13 15:35:53 +11:00
pata_mpiix.c [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
pata_netcell.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_ns87410.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_oldpiix.c (2.6.20) pata_oldpiix: fix PIO2 underclocking 2007-02-09 17:39:39 -05:00
pata_opti.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_optidma.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_pcmcia.c [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
pata_pdc202xx_old.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_pdc2027x.c [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
pata_platform.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_qdi.c libata: Add a host flag to indicate lack of IORDY capability 2007-02-15 18:04:01 -05:00
pata_radisys.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_rz1000.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_sc1200.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_scc.c libata: PATA driver for Celleb 2007-02-21 04:58:16 -05:00
pata_serverworks.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_sil680.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_sis.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_sl82c105.c add delay around sl82c105_reset_engine calls 2007-02-15 18:04:53 -05:00
pata_triflex.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_via.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_winbond.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pdc_adma.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sata_inic162x.c [PATCH] scheduled removal of SA_XXX interrupt flags: ata fix 2007-02-14 08:09:55 -08:00
sata_mv.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sata_nv.c sata_nv: handle SError status indication 2007-02-15 18:05:32 -05:00
sata_promise.c sata_promise: new EH conversion for 20619 chips, take 2 2007-02-15 18:04:00 -05:00
sata_promise.h
sata_qstor.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sata_sil24.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_sil.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_sis.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_svw.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_sx4.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sata_uli.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_via.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_vsc.c sata_vsc: use default cache line size if non-zero 2007-02-15 18:13:46 -05:00