diff options
Diffstat (limited to 'drivers/mmc/card')
-rw-r--r-- | drivers/mmc/card/block.c | 13 | ||||
-rw-r--r-- | drivers/mmc/card/mmc_test.c | 4 |
2 files changed, 11 insertions, 6 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) | |||
103 | check_disk_change(inode->i_bdev); | 103 | check_disk_change(inode->i_bdev); |
104 | ret = 0; | 104 | ret = 0; |
105 | 105 | ||
106 | if ((filp->f_mode & FMODE_WRITE) && md->read_only) | 106 | if ((filp->f_mode & FMODE_WRITE) && md->read_only) { |
107 | mmc_blk_put(md); | ||
107 | ret = -EROFS; | 108 | ret = -EROFS; |
109 | } | ||
108 | } | 110 | } |
109 | 111 | ||
110 | return ret; | 112 | return ret; |
@@ -613,14 +615,19 @@ static struct mmc_driver mmc_driver = { | |||
613 | 615 | ||
614 | static int __init mmc_blk_init(void) | 616 | static int __init mmc_blk_init(void) |
615 | { | 617 | { |
616 | int res = -ENOMEM; | 618 | int res; |
617 | 619 | ||
618 | res = register_blkdev(MMC_BLOCK_MAJOR, "mmc"); | 620 | res = register_blkdev(MMC_BLOCK_MAJOR, "mmc"); |
619 | if (res) | 621 | if (res) |
620 | goto out; | 622 | goto out; |
621 | 623 | ||
622 | return mmc_register_driver(&mmc_driver); | 624 | res = mmc_register_driver(&mmc_driver); |
625 | if (res) | ||
626 | goto out2; | ||
623 | 627 | ||
628 | return 0; | ||
629 | out2: | ||
630 | unregister_blkdev(MMC_BLOCK_MAJOR, "mmc"); | ||
624 | out: | 631 | out: |
625 | return res; | 632 | return res; |
626 | } | 633 | } |
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c index f26b01d811ae..b92b172074ee 100644 --- a/drivers/mmc/card/mmc_test.c +++ b/drivers/mmc/card/mmc_test.c | |||
@@ -1040,7 +1040,7 @@ static const struct mmc_test_case mmc_test_cases[] = { | |||
1040 | 1040 | ||
1041 | }; | 1041 | }; |
1042 | 1042 | ||
1043 | static struct mutex mmc_test_lock; | 1043 | static DEFINE_MUTEX(mmc_test_lock); |
1044 | 1044 | ||
1045 | static void mmc_test_run(struct mmc_test_card *test, int testcase) | 1045 | static void mmc_test_run(struct mmc_test_card *test, int testcase) |
1046 | { | 1046 | { |
@@ -1171,8 +1171,6 @@ static int mmc_test_probe(struct mmc_card *card) | |||
1171 | if ((card->type != MMC_TYPE_MMC) && (card->type != MMC_TYPE_SD)) | 1171 | if ((card->type != MMC_TYPE_MMC) && (card->type != MMC_TYPE_SD)) |
1172 | return -ENODEV; | 1172 | return -ENODEV; |
1173 | 1173 | ||
1174 | mutex_init(&mmc_test_lock); | ||
1175 | |||
1176 | ret = device_create_file(&card->dev, &dev_attr_test); | 1174 | ret = device_create_file(&card->dev, &dev_attr_test); |
1177 | if (ret) | 1175 | if (ret) |
1178 | return ret; | 1176 | return ret; |