
From: Peter Osterlund <petero2@telia.com>

cdrom_is_mrw() can incorrectly think that a drive is Mt Rainier capable,
because if forgets to check if the "GET CONFIGURATION" command returns the
MRW feature number.  According to the MMC spec, the drive shall return all
feature numbers >= the starting feature number, so even if the drive
doesn't support Mt Rainier, it can return some data that makes
cdrom_is_mrw() incorrectly think the drive is MRW capable.

This problem stops me from mounting DVD+RW discs in R/W mode on my laptop,
because it makes cdrom_open_write() call cdrom_mrw_open_write() which fails
because the drive isn't really MRW capable.

The fix is to make sure the returned feature number is the correct one for
Mt Rainier.

Signed-off-by: Peter Osterlund <petero2@telia.com>
Acked-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/cdrom/cdrom.c |    2 ++
 1 files changed, 2 insertions(+)

diff -puN drivers/cdrom/cdrom.c~fix-incorrect-mt-rainier-detection drivers/cdrom/cdrom.c
--- 25/drivers/cdrom/cdrom.c~fix-incorrect-mt-rainier-detection	2004-10-26 01:02:47.624694520 -0700
+++ 25-akpm/drivers/cdrom/cdrom.c	2004-10-26 01:02:47.630693608 -0700
@@ -546,6 +546,8 @@ int cdrom_is_mrw(struct cdrom_device_inf
 		return ret;
 
 	mfd = (struct mrw_feature_desc *)&buffer[sizeof(struct feature_header)];
+	if (be16_to_cpu(mfd->feature_code) != CDF_MRW)
+		return 1;
 	*write = mfd->write;
 
 	if ((ret = cdrom_mrw_probe_pc(cdi))) {
_
