diff options
Diffstat (limited to 'drivers/mmc/mmc_block.c')
| -rw-r--r-- | drivers/mmc/mmc_block.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/mmc/mmc_block.c b/drivers/mmc/mmc_block.c index fa83f15fdf1..9b629856c73 100644 --- a/drivers/mmc/mmc_block.c +++ b/drivers/mmc/mmc_block.c @@ -85,6 +85,12 @@ static void mmc_blk_put(struct mmc_blk_data *md)  	up(&open_lock);  } +static inline int mmc_blk_readonly(struct mmc_card *card) +{ +	return mmc_card_readonly(card) || +	       !(card->csd.cmdclass & CCC_BLOCK_WRITE); +} +  static int mmc_blk_open(struct inode *inode, struct file *filp)  {  	struct mmc_blk_data *md; @@ -97,7 +103,7 @@ static int mmc_blk_open(struct inode *inode, struct file *filp)  		ret = 0;  		if ((filp->f_mode & FMODE_WRITE) && -			mmc_card_readonly(md->queue.card)) +			mmc_blk_readonly(md->queue.card))  			ret = -EROFS;  	} @@ -410,7 +416,7 @@ static int mmc_blk_probe(struct mmc_card *card)  	printk(KERN_INFO "%s: %s %s %dKiB %s\n",  		md->disk->disk_name, mmc_card_id(card), mmc_card_name(card),  		(card->csd.capacity << card->csd.read_blkbits) / 1024, -		mmc_card_readonly(card)?"(ro)":""); +		mmc_blk_readonly(card)?"(ro)":"");  	mmc_set_drvdata(card, md);  	add_disk(md->disk);  | 
