android_kernel_samsung_univ.../drivers
Alan Jenkins 2b14290078 [SCSI] extend the last_sector_bug flag to cover more sectors
The last_sector_bug flag was added to work around a bug in certain usb
cardreaders, where they would crash if a multiple sector read included the
last sector. The original implementation avoids this by e.g. splitting an 8
sector read which includes the last sector into a 7 sector read, and a single
sector read for the last sector.  The flag is enabled for all USB devices.

This revealed a second bug in other usb cardreaders, which crash when they
get a multiple sector read which stops 1 sector short of the last sector.
Affected hardware includes the Kingston "MobileLite" external USB cardreader
and the internal USB cardreader on the Asus EeePC.

Extend the last_sector_bug workaround to ensure that any access which touches
the last 8 hardware sectors of the device is a single sector long.  Requests
are shrunk as necessary to meet this constraint.

This gives us a safety margin against potential unknown or future bugs
affecting multi-sector access to the end of the device.  The two known bugs
only affect the last 2 sectors.  However, they suggest that these devices
are prone to fencepost errors and that multi-sector access to the end of the
device is not well tested.  Popular OS's use multi-sector accesses, but they
rarely read the last few sectors.  Linux (with udev & vol_id) automatically
reads sectors from the end of the device on insertion.  It is assumed that
single sector accesses are more thoroughly tested during development.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Tested-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
2008-07-27 10:16:13 -04:00
..
accessibility
acpi Merge branch 'release-2.6.27' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-acpi-2.6 2008-07-24 13:57:37 -07:00
amba
ata Fix ahci driver 'flags' type 2008-07-25 10:56:36 -07:00
atm
auxdisplay
base firmware: use memory_read_from_buffer() 2008-07-25 10:53:44 -07:00
block aoe: convert emsgs_sema into a completion 2008-07-25 10:53:45 -07:00
bluetooth
cdrom
char Merge git://git.infradead.org/embedded-2.6 2008-07-25 12:02:08 -07:00
clocksource
connector
cpufreq
cpuidle
crypto
dca
dio
dma
edac edac: mpc85xx fix pci ofdev 2nd pass 2008-07-25 10:53:49 -07:00
eisa
firewire
firmware dell_rbu: use memory_read_from_buffer() 2008-07-25 10:53:44 -07:00
gpio gpio: max732x driver 2008-07-25 10:53:30 -07:00
gpu
hid
hwmon
i2c gpiolib: allow user-selection 2008-07-25 10:53:30 -07:00
ide ide: use proper printk() KERN_* levels in ide-probe.c 2008-07-24 22:53:36 +02:00
ieee1394
infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2008-07-24 12:56:07 -07:00
input Undo duplicate "m68k: drivers/input/serio/hp_sdc.c needs <linux/semaphore.h>" 2008-07-25 09:19:36 -07:00
isdn Rename WARN() to WARNING() to clear the namespace 2008-07-25 10:53:29 -07:00
leds
lguest virtio: Add transport feature handling stub for virtio_ring. 2008-07-25 12:06:14 +10:00
macintosh
mca
md [SCSI] scsi_dh: attach to hardware handler from dm-mpath 2008-07-26 15:14:53 -04:00
media
memstick
message
mfd MFD_TC6393XB is ARM-only 2008-07-25 17:39:36 -07:00
misc drivers/misc/phantom: note PCI 2008-07-25 10:53:44 -07:00
mmc
mtd Merge branch 'linux-next' of git://git.infradead.org/~dedekind/ubi-2.6 2008-07-25 11:02:17 -07:00
net Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2008-07-25 11:08:17 -07:00
nubus
of Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2008-07-25 11:08:17 -07:00
oprofile
parisc
parport parport: fix platform driver hotplug/coldplug 2008-07-25 10:53:28 -07:00
pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2008-07-24 13:57:13 -07:00
pcmcia
pnp
power drivers/power: fix platform driver hotplug/coldplug 2008-07-25 10:53:28 -07:00
ps3
rapidio
rtc
s390 virtio: Add transport feature handling stub for virtio_ring. 2008-07-25 12:06:14 +10:00
sbus
scsi [SCSI] extend the last_sector_bug flag to cover more sectors 2008-07-27 10:16:13 -04:00
serial
sh
sn
spi
ssb
tc
telephony ixj: push BKL into driver and wrap ioctls 2008-07-25 10:53:43 -07:00
thermal
uio
usb Rename WARN() to WARNING() to clear the namespace 2008-07-25 10:53:29 -07:00
video
virtio virtio: Add transport feature handling stub for virtio_ring. 2008-07-25 12:06:14 +10:00
w1
watchdog
xen
zorro
Kconfig
Makefile gpiolib: allow user-selection 2008-07-25 10:53:30 -07:00