diff options
author | Ryosuke Saito <raitosyo@gmail.com> | 2012-04-05 08:09:34 -0600 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-05-12 09:32:21 -0700 |
commit | 24041232df8a8e96113ddd1f83a58f552f1f5968 (patch) | |
tree | dd7e93e0b00e09f5907abf34c6f9880e76484164 | |
parent | 633935add06d8deb9fb2879fd06bbfd9df7e1a89 (diff) | |
download | lwn-24041232df8a8e96113ddd1f83a58f552f1f5968.tar.gz lwn-24041232df8a8e96113ddd1f83a58f552f1f5968.zip |
mtip32xx: fix error handling in mtip_init()
commit 6d27f09a6398ee086b11804aa3a16609876f0c7c upstream.
Ensure that block device is properly unregistered, if
pci_register_driver() fails.
Signed-off-by: Ryosuke Saito <raitosyo@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/block/mtip32xx/mtip32xx.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c index 04f69e6da1fe..c37073ddf7d4 100644 --- a/drivers/block/mtip32xx/mtip32xx.c +++ b/drivers/block/mtip32xx/mtip32xx.c @@ -3605,18 +3605,25 @@ MODULE_DEVICE_TABLE(pci, mtip_pci_tbl); */ static int __init mtip_init(void) { + int error; + printk(KERN_INFO MTIP_DRV_NAME " Version " MTIP_DRV_VERSION "\n"); /* Allocate a major block device number to use with this driver. */ - mtip_major = register_blkdev(0, MTIP_DRV_NAME); - if (mtip_major < 0) { + error = register_blkdev(0, MTIP_DRV_NAME); + if (error <= 0) { printk(KERN_ERR "Unable to register block device (%d)\n", - mtip_major); + error); return -EBUSY; } + mtip_major = error; /* Register our PCI operations. */ - return pci_register_driver(&mtip_pci_driver); + error = pci_register_driver(&mtip_pci_driver); + if (error) + unregister_blkdev(mtip_major, MTIP_DRV_NAME); + + return error; } /* |