diff options
author | Akinobu Mita <akinobu.mita@gmail.com> | 2008-09-13 06:02:07 -0400 |
---|---|---|
committer | Pierre Ossman <drzeus@drzeus.cx> | 2008-09-20 07:03:26 -0400 |
commit | 9d4e98e9609bc19d4a8ac4a5c3218358d1820114 (patch) | |
tree | 5b794afb9abc6af1051ce3c9f031034a329b05f0 /drivers/mmc/card/block.c | |
parent | da45b66ec89bbf3a1c172688c35d4d3a6e8e757f (diff) |
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>
Diffstat (limited to 'drivers/mmc/card/block.c')
-rw-r--r-- | drivers/mmc/card/block.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index 86dbb366415a..43d9a5b53e8d 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c | |||
@@ -613,14 +613,19 @@ static struct mmc_driver mmc_driver = { | |||
613 | 613 | ||
614 | static int __init mmc_blk_init(void) | 614 | static int __init mmc_blk_init(void) |
615 | { | 615 | { |
616 | int res = -ENOMEM; | 616 | int res; |
617 | 617 | ||
618 | res = register_blkdev(MMC_BLOCK_MAJOR, "mmc"); | 618 | res = register_blkdev(MMC_BLOCK_MAJOR, "mmc"); |
619 | if (res) | 619 | if (res) |
620 | goto out; | 620 | goto out; |
621 | 621 | ||
622 | return mmc_register_driver(&mmc_driver); | 622 | res = mmc_register_driver(&mmc_driver); |
623 | if (res) | ||
624 | goto out2; | ||
623 | 625 | ||
626 | return 0; | ||
627 | out2: | ||
628 | unregister_blkdev(MMC_BLOCK_MAJOR, "mmc"); | ||
624 | out: | 629 | out: |
625 | return res; | 630 | return res; |
626 | } | 631 | } |