If the card does not support the write commands then only allow
read-only access.
Signed-off-by: Pierre Ossman <[email protected]>
--- linux-2.6.11/drivers/mmc/mmc_block.c.orig 2005-06-04 21:44:20.000000000 +0200
+++ linux-2.6.11/drivers/mmc/mmc_block.c 2005-06-04 21:48:46.000000000 +0200
@@ -95,6 +95,10 @@ static int mmc_blk_open(struct inode *in
if (md->usage == 2)
check_disk_change(inode->i_bdev);
ret = 0;
+
+ if ((filp->f_mode & FMODE_WRITE) &&
+ !(md->queue.card->csd.cmdclass & CCC_BLOCK_WRITE))
+ ret = -EROFS;
}
return ret;
@@ -403,9 +407,12 @@ static int mmc_blk_probe(struct mmc_card
if (err)
goto out;
- printk(KERN_INFO "%s: %s %s %dKiB\n",
+ printk(KERN_INFO "%s: %s %s %dKiB",
md->disk->disk_name, mmc_card_id(card), mmc_card_name(card),
(card->csd.capacity << card->csd.read_blkbits) / 1024);
+ if (!(card->csd.cmdclass & CCC_BLOCK_WRITE))
+ printk(" (ro)");
+ printk("\n");
mmc_set_drvdata(card, md);
add_disk(md->disk);
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]