+++ This bug was initially created as a clone of Bug #457025 +++
Description of problem:
cdrom_read_capacity() will blindly return the capacity from the device without
sanity-checking it. This later causes code in fs/buffer.c to oops.
Fix this by checking that the device is telling us sensible things.
-- Additional comment from firstname.lastname@example.org on 2008-07-29 06:07 EST --
Proposed upstream patch:
-- Additional comment from email@example.com on 2008-07-29 06:10 EST --
With reference to http://lkml.org/lkml/2008/6/22/90, problem was triggered by
running "genisoimage -C 16,737776 -M /dev/fd/3 -R -J foobar | builtin_dd
of=/dev/dvd obs=32k seek=46111" on a ppc64 machine.
There's a follow-up patch that fixes a bug in commit
e8e7b9eb11c34ee18bde8b7011af41938d1ad667. Please include commit
938bb03d188a1e688fb0bcae49788f540193e80a in your backported patch. Thanks.
Created attachment 314499 [details]
Backport of mainstream patches
The attached patch is the backport of the upstream git patches.
On all tests I did here with RHEL4 with and without the patch, I couldn't reproduce the bug on i386. I suspect that it occurs only on some other architecture (the original report were on ppc64), or when the first DVD record has an unusual block size.
The patch were posted today.
Updating PM score.
Committed in 78.24.EL . RPMS are available at http://people.redhat.com/vgoyal/rhel4/
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.