linux/drivers
Boaz Harrosh e15fca01ba scsi_lib: Fix bug in completion of bidi commands
commit 63c43b0ec1 upstream.

Because of the terrible structuring of scsi-bidi-commands
it breaks some of the life time rules of a scsi-command.
It is now not allowed to free up the block-request before
cleanup and partial deallocation of the scsi-command. (Which
is not so for none bidi commands)

The right fix to this problem would be to make bidi command
a first citizen by allocating a scsi_sdb pointer at scsi command
just like cmd->prot_sdb. The bidi sdb should be allocated/deallocated
as part of the get/put_command (Again like the prot_sdb) and the
current decoupling of scsi_cmnd and blk-request should be kept.

For now make sure scsi_release_buffers() is called before the
call to blk_end_request_all() which might cause the suicide of
the block requests. At best the leak of bidi buffers, at worse
a crash, as there is a race between the existence of the bidi_request
and the free of the associated bidi_sdb.

The reason this was never hit before is because only OSD has the potential
of doing asynchronous bidi commands. (So does bsg but it is never used)
And OSD clients just happen to do all their bidi commands synchronously, up
until recently.

Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-02-09 04:50:41 -08:00
..
accessibility
acpi ACPI: enable C2 and Turbo-mode on Nehalem notebooks on A/C 2010-01-28 15:02:54 -08:00
amba
ata ata_piix: fix MWDMA handling on PIIX3 2010-01-28 15:02:16 -08:00
atm net: Make setsockopt() optlen be unsigned. 2009-09-30 16:12:20 -07:00
auxdisplay
base driver-core: fix devtmpfs crash on s390 2010-01-28 15:00:45 -08:00
block aoe: prevent cache aliases 2009-12-01 16:32:20 -08:00
bluetooth Bluetooth: Prevent ill-timed autosuspend in USB driver 2010-01-06 15:03:43 -08:00
cdrom sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
char nozomi: quick fix for the close/close bug 2010-01-25 10:49:20 -08:00
clocksource
connector connector: Fix incompatible pointer type warning 2009-10-06 01:39:51 -07:00
cpufreq [CPUFREQ] Fix stale cpufreq_cpu_governor pointer 2009-11-17 23:15:04 -05:00
cpuidle drivers/cpuidle/governors/menu.c: fix undefined reference to `__udivdi3' 2010-01-18 10:19:31 -08:00
crypto crypto: padlock-aes - Use the correct mask when checking whether copying is required 2009-11-03 10:32:03 -05:00
dca
dio
dma ioat2,3: put channel hardware in known state at init 2010-01-06 15:03:59 -08:00
edac edac: i5000_edac critical fix panic out of bounds 2010-01-22 15:18:15 -08:00
eisa
firewire firewire: ohci: handle receive packets with a data length of zero 2009-12-18 14:02:57 -08:00
firmware DMI: allow omitting ident strings in DMI tables 2010-01-28 15:01:52 -08:00
gpio gpio: Langwell GPIO driver bugfixes 2009-12-01 16:32:19 -08:00
gpu drm/i915: try another possible DDC bus for the SDVO device with multiple outputs 2010-01-25 10:49:39 -08:00
hid HID: fixup quirk for NCR devices 2010-01-28 15:01:20 -08:00
hwmon hwmon: (fschmd) Fix a memleak on multiple opens of /dev/watchdog 2010-01-28 15:02:27 -08:00
i2c i2c/pca: Don't use *_interruptible 2010-01-22 15:18:35 -08:00
ide slc90e66: fix UDMA handling 2009-12-18 14:05:04 -08:00
idle
ieee1394 headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
ieee802154 ieee802154: dont leak skbs in ieee802154_fake_xmit() 2009-11-19 13:16:21 -08:00
infiniband IPoIB: Clear ipoib_neigh.dgid in ipoib_neigh_alloc() 2010-01-28 15:02:51 -08:00
input Input: i8042 - add Dritek quirk for Acer Aspire 5610. 2010-01-28 15:01:58 -08:00
isdn Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-18 14:54:45 -08:00
leds leds-gpio: fix possible crash on OF device unbinding 2009-11-16 11:50:42 +00:00
lguest lguest: fix bug in setting guest GDT entry 2010-01-06 15:05:19 -08:00
macintosh powerpc/therm_adt746x: Record pwm invert bit at module load time] 2009-12-18 14:04:32 -08:00
mca
md md: fix small irregularity with start_ro module parameter 2010-01-28 15:02:18 -08:00
media V4L/DVB (13826): uvcvideo: Fix controls blacklisting 2010-01-28 15:02:19 -08:00
memstick memstick: move dev_dbg 2009-09-24 07:21:05 -07:00
message headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
mfd mfd: WM835x GPIO direction register is not locked 2010-01-22 15:18:18 -08:00
misc SCSI: enclosure: fix oops while iterating enclosure_status array 2010-01-25 10:49:37 -08:00
mmc mmc_block: fix queue cleanup 2010-01-18 10:19:36 -08:00
mtd UBI: initialise update marker 2010-01-28 15:02:34 -08:00
net iwlwifi: Fix throughput stall issue in HT mode for 5000 2010-01-28 15:02:56 -08:00
nubus
of of: Remove nested function 2009-10-15 09:58:27 -06:00
oprofile oprofile: warn on freeing event buffer too early 2009-10-09 21:32:05 +02:00
parisc mm: replace various uses of num_physpages by totalram_pages 2009-09-22 07:17:38 -07:00
parport sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
pci PCI: AER: fix aer inject result in kernel oops 2010-01-28 15:01:51 -08:00
pcmcia PCI/cardbus: Add a fixup hook and fix powerpc 2010-01-22 15:18:26 -08:00
platform asus-laptop: add Lenovo SL hotkey support 2010-01-22 15:18:29 -08:00
pnp ACPI: remove acpi_device.flags.hardware_id 2009-09-25 15:09:48 -04:00
power Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2009-09-23 03:49:27 +04:00
pps pps: events reporting fix up 2009-11-12 07:26:01 -08:00
ps3
rapidio
regulator regulator: Initialise wm831x structure pointor for ISINK driver 2009-12-02 19:37:16 +00:00
rtc rtc_cmos: convert shutdown to new pnp_driver->shutdown 2010-01-18 10:19:29 -08:00
s390 netiucv: displayed TX bytes value much too high 2010-01-28 15:02:24 -08:00
sbus const: make block_device_operations const 2009-09-22 07:17:25 -07:00
scsi scsi_lib: Fix bug in completion of bidi commands 2010-02-09 04:50:41 -08:00
serial serial: 8250_pnp: use wildcard for serial Wacom tablets 2010-01-25 10:49:24 -08:00
sfi SFI: remove __init from sfi_verify_table 2009-10-03 01:16:12 -04:00
sh
sn
spi SPI: spi_txx9: Fix bit rate calculation 2009-12-02 23:58:32 +00:00
ssb ssb: Fix range check in sprom write 2009-12-18 14:03:24 -08:00
staging Staging: hv: fix smp problems in the hyperv core code 2010-01-25 10:49:15 -08:00
tc
telephony
thermal acpi: thermal: Add EOL to the trip_point_N_type strings 2009-11-05 17:33:24 -05:00
uio uio: pm_runtime_disable is needed if failed 2009-11-13 11:36:00 +09:00
usb USB: ftdi_sio: add USB device ID's for B&B Electronics line 2010-01-28 15:00:54 -08:00
uwb headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
video revert "drivers/video/s3c-fb.c: fix clock setting for Samsung SoC Framebuffer" 2010-01-22 15:17:59 -08:00
virtio virtio: order used ring after used index read 2009-10-29 08:50:37 +10:30
vlynq drivers/vlynq/vlynq.c: fix resource size off by 1 error 2009-09-24 07:21:05 -07:00
w1 ds2482: Discard obsolete detect method 2009-10-04 22:53:41 +02:00
watchdog iTCO_wdt: Add Intel Cougar Point and PCH DeviceIDs 2010-01-28 15:02:14 -08:00
xen xen: fix hang on suspend. 2010-01-18 10:19:44 -08:00
zorro
Kconfig
Makefile Merge git://git.infradead.org/mtd-2.6 2009-09-23 10:07:49 -07:00