Browse Source

mmc_block: handle error from mmc_register_driver()

Check error from mmc_register_driver() and properly unwind
block device registration.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Akinobu Mita 16 years ago
parent
commit
9d4e98e960
1 changed files with 7 additions and 2 deletions
  1. 7 2
      drivers/mmc/card/block.c

+ 7 - 2
drivers/mmc/card/block.c

@@ -613,14 +613,19 @@ static struct mmc_driver mmc_driver = {
 
 
 static int __init mmc_blk_init(void)
 static int __init mmc_blk_init(void)
 {
 {
-	int res = -ENOMEM;
+	int res;
 
 
 	res = register_blkdev(MMC_BLOCK_MAJOR, "mmc");
 	res = register_blkdev(MMC_BLOCK_MAJOR, "mmc");
 	if (res)
 	if (res)
 		goto out;
 		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:
  out:
 	return res;
 	return res;
 }
 }