]> git.baikalelectronics.ru Git - kernel.git/commit
firewire: core: fix "giving up on config rom" with Panasonic AG-DV2500
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Thu, 18 Feb 2010 00:50:31 +0000 (01:50 +0100)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Wed, 24 Feb 2010 19:36:54 +0000 (20:36 +0100)
commit2d22768d76bcf2b1246ef5c320d3a5c9d4bae90b
treed5f32f6188e69c1bca388b92127cb0f26ac0f3aa
parent67644beba99db7344c16c43896a99c08403e2d6d
firewire: core: fix "giving up on config rom" with Panasonic AG-DV2500

The Panasonic AG-DV2500 tape deck contains an invalid entry in its
configuration ROM root directory:  A leaf pointer with the undefined key
ID 0 and an offset that points way out of the standard config ROM area.
This caused firewire-core to dismiss the device with the generic log
message "giving up on config rom for node id...", after which it was of
course impossible to access the tape deck with dvgrab or any other
program.  https://bugzilla.redhat.com/show_bug.cgi?id=449252#c29

The fix is to simply ignore this invalid ROM entry and proceed to read
the valid rest of the ROM.  There is a catch though:  When the kernel
later iterates over the ROM, it would be nasty having to check again for
such too large ROM offsets.  Therefore we manipulate the defective or
unsupported ROM entry to become a harmless immediate entry that won't
have any side effects later (an entry with the value 0x00000000).

Reported-by: George Chriss
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/core-device.c