linux/drivers/ide
Bartlomiej Zolnierkiewicz e3b29f0512 ide: fix OOPS during ide-cd error recovery
On Tuesday 19 May 2009 20:29:28 Martin Lottermoser wrote:

>   hdc: cdrom_decode_status: error=0x40 <3>{ LastFailedSense=0x04 }
>   ide: failed opcode was: unknown
>   hdc: DMA disabled
>   ------------[ cut here ]------------
>   kernel BUG at drivers/ide/ide-io.c:872!

It is possible for ide-cd to ignore ide_error()'s return value under
some circumstances.  Workaround it in ide_intr() and ide_timer_expiry()
by checking if there is a device/port reset pending currently.

Fixes bug #13345:

	http://bugzilla.kernel.org/show_bug.cgi?id=13345

Reported-by: Martin Lottermoser <Martin.Lottermoser@t-online.de>
Reported-and-tested-by: Modestas Vainius <modestas@vainius.eu>
Cc: Borislav Petkov <petkovbb@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-05-22 16:23:37 +02:00
..
aec62xx.c ide: fix ->init_chipset method to return 'int' value 2009-03-24 23:22:53 +01:00
ali14xx.c ide: remove useless subdirs from drivers/ide/ 2008-10-21 20:57:23 +02:00
alim15x3.c ide: add ->dma_check method 2009-03-31 20:15:21 +02:00
amd74xx.c ide: fix ->init_chipset method to return 'int' value 2009-03-24 23:22:53 +01:00
at91_ide.c at91_ide: turn on PIO 6 support 2009-04-08 14:13:04 +02:00
atiixp.c ide: remove no longer needed IDE_HFLAG[_FORCE]_LEGACY_IRQS 2009-03-24 23:22:52 +01:00
au1xxx-ide.c ide: turn selectproc() method into dev_select() method (take 5) 2009-03-31 20:15:32 +02:00
buddha.c ide: allow host drivers to specify IRQ flags 2009-03-27 12:46:27 +01:00
cmd64x.c ide: set/clear drive->waiting_for_dma flag in the core code 2009-03-31 20:15:22 +02:00
cmd640.c cmd640: use ide_get_pair_dev() helper 2009-01-06 17:20:55 +01:00
cs5520.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
cs5530.c ide: identify data word 53 bit 1 doesn't cover words 62 and 63 (take 3) 2009-03-31 20:15:27 +02:00
cs5535.c ide: remove useless subdirs from drivers/ide/ 2008-10-21 20:57:23 +02:00
cs5536.c cs5536: define dma_sff_read_status() method 2009-04-18 17:42:20 +02:00
cy82c693.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
delkin_cb.c ide: allow host drivers to specify IRQ flags 2009-03-27 12:46:27 +01:00
dtc2278.c ide: add IDE_HFLAG_DTC2278 host flag 2009-03-27 12:46:28 +01:00
falconide.c ide: falconide/q40ide - Use __ide_mm_{in,out}sw() for data 2009-04-08 14:12:48 +02:00
gayle.c ide: remove CONFIG_BLK_DEV_IDEDOUBLER config option 2009-03-31 20:15:26 +02:00
hpt366.c hpt366: use ATA_DMA_* constants 2009-04-18 17:42:19 +02:00
ht6560b.c ide: turn selectproc() method into dev_select() method (take 5) 2009-03-31 20:15:32 +02:00
icside.c icside: register second channel of version 6 PCB 2009-05-16 19:03:36 +02:00
ide_platform.c ide: remove useless subdirs from drivers/ide/ 2008-10-21 20:57:23 +02:00
ide-4drives.c ide: add IDE_HFLAG_4DRIVES host flag 2009-03-27 12:46:28 +01:00
ide-acpi.c ide: simplify 'struct ide_taskfile' 2009-04-08 14:13:02 +02:00
ide-atapi.c ide: refactor tf_read() method 2009-04-08 14:13:03 +02:00
ide-cd_ioctl.c ide: remove IDE_AFLAG_NO_DOORLOCKING 2008-10-17 18:09:11 +02:00
ide-cd_verbose.c block: replace sizeof(rq->cmd) with BLK_MAX_CDB 2008-04-29 14:48:55 +02:00
ide-cd.c ide-cd: fix REQ_QUIET tests in cdrom_decode_status 2009-04-30 18:24:34 +02:00
ide-cd.h ide-cd: use ide_drive_t's rq in cdrom_queue_request_sense 2009-03-27 12:46:24 +01:00
ide-cs.c ide: allow host drivers to specify IRQ flags 2009-03-27 12:46:27 +01:00
ide-devsets.c ide: remove ide_end_request() 2009-03-27 12:46:45 +01:00
ide-disk_ioctl.c [PATCH] switch ide_disk_ops ->ioctl() to sane prototype 2008-10-21 07:47:30 -04:00
ide-disk_proc.c ide: replace IDE_TFLAG_* flags by IDE_VALID_* 2009-04-08 14:13:01 +02:00
ide-disk.c ide: simplify 'struct ide_taskfile' 2009-04-08 14:13:02 +02:00
ide-disk.h [PATCH] switch ide_disk_ops ->ioctl() to sane prototype 2008-10-21 07:47:30 -04:00
ide-dma-sff.c ide: remove wmb() from ide-dma-sff.c and scc_pata.c 2009-04-08 14:12:49 +02:00
ide-dma.c ide: add support for CFA specified transfer modes (take 3) 2009-03-31 20:15:28 +02:00
ide-eh.c ide: inline SELECT_DRIVE() 2009-03-31 20:15:33 +02:00
ide-floppy_ioctl.c ide: decrease size of ->pc_buf field in struct ide_atapi_pc 2009-03-31 20:15:25 +02:00
ide-floppy_proc.c ide: NULL noise: drivers/ide/ide-*.c 2009-03-05 16:10:56 +01:00
ide-floppy.c ide-floppy: use ide_pio_bytes() 2009-03-31 20:15:26 +02:00
ide-floppy.h [PATCH] switch ide_disk_ops ->ioctl() to sane prototype 2008-10-21 07:47:30 -04:00
ide-gd.c ide: Stop disks on reboot for laptop which cuts power 2009-04-22 20:33:41 +02:00
ide-gd.h ide: move ->failed_pc to ide_drive_t 2009-03-27 12:46:34 +01:00
ide-generic.c ide: merge ide_arm and ide_generic host drivers 2009-03-31 20:15:24 +02:00
ide-h8300.c ide-h8300: remove custom tf_{read|load}() methods 2009-04-08 14:12:51 +02:00
ide-io-std.c ide: refactor tf_read() method 2009-04-08 14:13:03 +02:00
ide-io.c ide: fix OOPS during ide-cd error recovery 2009-05-22 16:23:37 +02:00
ide-ioctls.c ide: simplify 'struct ide_taskfile' 2009-04-08 14:13:02 +02:00
ide-iops.c ide: fix 40-wire cable detection for TSST SH-S202* ATAPI devices (v2) 2009-05-22 16:23:36 +02:00
ide-legacy.c ide: move legacy ISA/VLB ports handling to ide-legacy.c (v2) 2008-12-29 20:27:37 +01:00
ide-lib.c ide: refactor tf_read() method 2009-04-08 14:13:03 +02:00
ide-park.c ide: replace IDE_TFLAG_* flags by IDE_VALID_* 2009-04-08 14:13:01 +02:00
ide-pci-generic.c ide: remove no longer needed IDE_HFLAG[_FORCE]_LEGACY_IRQS 2009-03-24 23:22:52 +01:00
ide-pio-blacklist.c ide: move PIO blacklist to ide-pio-blacklist.c 2008-07-16 20:33:39 +02:00
ide-pm.c ide: replace IDE_TFLAG_* flags by IDE_VALID_* 2009-04-08 14:13:01 +02:00
ide-pnp.c ide-pnp: use struct ide_port_info 2009-03-27 12:46:18 +01:00
ide-probe.c ide: refactor tf_read() method 2009-04-08 14:13:03 +02:00
ide-proc.c ide: replace IDE_TFLAG_* flags by IDE_VALID_* 2009-04-08 14:13:01 +02:00
ide-scan-pci.c ide: replace remaining __FUNCTION__ occurrences 2008-04-26 22:25:20 +02:00
ide-sysfs.c ide: move sysfs support to ide-sysfs.c 2009-01-02 16:12:48 +01:00
ide-tape.c ide-tape: remove back-to-back REQUEST_SENSE detection 2009-05-16 19:03:18 +02:00
ide-taskfile.c ide: refactor tf_read() method 2009-04-08 14:13:03 +02:00
ide-timings.c ide: add support for CFA specified transfer modes (take 3) 2009-03-31 20:15:28 +02:00
ide-xfer-mode.c ide: add support for CFA specified transfer modes (take 3) 2009-03-31 20:15:28 +02:00
ide.c ide: move device settings code to ide-devsets.c 2009-03-24 23:22:44 +01:00
it821x.c ide: add ->dma_clear method and remove ->dma_timeout one 2009-03-31 20:15:19 +02:00
it8172.c Resurrect IT8172 IDE controller driver 2009-01-06 17:21:01 +01:00
it8213.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
jmicron.c ide: Switch to a common address 2008-11-02 21:40:08 +01:00
Kconfig ide: be able to build pmac driver without IDE built-in 2009-03-31 20:15:34 +02:00
macide.c ide: allow host drivers to specify IRQ flags 2009-03-27 12:46:27 +01:00
Makefile ide: merge ide_arm and ide_generic host drivers 2009-03-31 20:15:24 +02:00
ns87415.c ide: refactor tf_read() method 2009-04-08 14:13:03 +02:00
opti621.c ide: remove useless subdirs from drivers/ide/ 2008-10-21 20:57:23 +02:00
palm_bk3710.c palm_bk3710: palm_bk3710_udmatimings[] CodingStyle fixup 2009-04-23 22:53:45 +02:00
pdc202xx_new.c ide: fix ->init_chipset method to return 'int' value 2009-03-24 23:22:53 +01:00
pdc202xx_old.c ide: add ->dma_clear method and remove ->dma_timeout one 2009-03-31 20:15:19 +02:00
piix.c piix: The Sony TZ90 needs the cable type hardcoding 2009-05-16 19:03:36 +02:00
pmac.c ide: Remove void casts 2009-04-18 17:42:19 +02:00
q40ide.c ide: falconide/q40ide - Use __ide_mm_{in,out}sw() for data 2009-04-08 14:12:48 +02:00
qd65xx.c ide: turn selectproc() method into dev_select() method (take 5) 2009-03-31 20:15:32 +02:00
qd65xx.h Fix my email address in qd65xx.[ch]/pata_qdi.c 2009-02-03 16:53:56 -08:00
rapide.c arm ide breakage 2008-10-26 09:35:05 -07:00
rz1000.c rz1000: apply chipset quirks early (v2) 2008-12-29 20:27:33 +01:00
sc1200.c ide: identify data word 53 bit 1 doesn't cover words 62 and 63 (take 3) 2009-03-31 20:15:27 +02:00
scc_pata.c ide: refactor tf_read() method 2009-04-08 14:13:03 +02:00
serverworks.c ide: fix ->init_chipset method to return 'int' value 2009-03-24 23:22:53 +01:00
setup-pci.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
sgiioc4.c ide: turn selectproc() method into dev_select() method (take 5) 2009-03-31 20:15:32 +02:00
siimage.c ide: add ->dma_clear method and remove ->dma_timeout one 2009-03-31 20:15:19 +02:00
sis5513.c ide: fix ->init_chipset method to return 'int' value 2009-03-24 23:22:53 +01:00
sl82c105.c ide: add support for CFA specified transfer modes (take 3) 2009-03-31 20:15:28 +02:00
slc90e66.c ide: remove no longer needed IDE_HFLAG[_FORCE]_LEGACY_IRQS 2009-03-24 23:22:52 +01:00
tc86c001.c ide: add ->dma_clear method and remove ->dma_timeout one 2009-03-31 20:15:19 +02:00
triflex.c ide: remove HWIF() macro 2009-01-06 17:20:52 +01:00
trm290.c ide: turn selectproc() method into dev_select() method (take 5) 2009-03-31 20:15:32 +02:00
tx4938ide.c tx493[89]ide: Remove big endian version of tx493[89]ide_tf_{load,read} 2009-04-08 14:12:52 +02:00
tx4939ide.c ide: refactor tf_load() method 2009-04-08 14:13:03 +02:00
umc8672.c ide: merge ide_hwgroup_t with ide_hwif_t (v2) 2009-01-06 17:20:50 +01:00
via82cxxx.c ide: fix ->init_chipset method to return 'int' value 2009-03-24 23:22:53 +01:00