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>

authored by Akinobu Mita and committed by Pierre Ossman 9d4e98e9 da45b66e

+7 -2
+7 -2
drivers/mmc/card/block.c
··· 613 614 static int __init mmc_blk_init(void) 615 { 616 - int res = -ENOMEM; 617 618 res = register_blkdev(MMC_BLOCK_MAJOR, "mmc"); 619 if (res) 620 goto out; 621 622 - return mmc_register_driver(&mmc_driver); 623 624 out: 625 return res; 626 }
··· 613 614 static int __init mmc_blk_init(void) 615 { 616 + int res; 617 618 res = register_blkdev(MMC_BLOCK_MAJOR, "mmc"); 619 if (res) 620 goto out; 621 622 + res = mmc_register_driver(&mmc_driver); 623 + if (res) 624 + goto out2; 625 626 + return 0; 627 + out2: 628 + unregister_blkdev(MMC_BLOCK_MAJOR, "mmc"); 629 out: 630 return res; 631 }