summaryrefslogtreecommitdiff
path: root/drivers/mmc/card/block.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-09-30 14:16:26 +0400
committerIngo Molnar <mingo@elte.hu>2008-09-30 14:16:26 +0400
commit59293c8ad54726150cf6178164311b004d615ce4 (patch)
tree6fcf8e59a2c9ac08a4ff092544c34d2254ac0d74 /drivers/mmc/card/block.c
parent45f197ade73ba95681b9803680c75352fc0a1c0a (diff)
parent94aca1dac6f6d21f4b07e4864baf7768cabcc6e7 (diff)
downloadlinux-59293c8ad54726150cf6178164311b004d615ce4.tar.xz
Merge commit 'v2.6.27-rc8' into oprofile
Conflicts: arch/x86/oprofile/nmi_int.c Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/mmc/card/block.c')
-rw-r--r--drivers/mmc/card/block.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 86dbb366415a..ebc8b9d77613 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -103,8 +103,10 @@ static int mmc_blk_open(struct inode *inode, struct file *filp)
check_disk_change(inode->i_bdev);
ret = 0;
- if ((filp->f_mode & FMODE_WRITE) && md->read_only)
+ if ((filp->f_mode & FMODE_WRITE) && md->read_only) {
+ mmc_blk_put(md);
ret = -EROFS;
+ }
}
return ret;
@@ -613,14 +615,19 @@ static struct mmc_driver mmc_driver = {
static int __init mmc_blk_init(void)
{
- int res = -ENOMEM;
+ int res;
res = register_blkdev(MMC_BLOCK_MAJOR, "mmc");
if (res)
goto out;
- return mmc_register_driver(&mmc_driver);
+ res = mmc_register_driver(&mmc_driver);
+ if (res)
+ goto out2;
+ return 0;
+ out2:
+ unregister_blkdev(MMC_BLOCK_MAJOR, "mmc");
out:
return res;
}