aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorNir Muchtar <nirm@voltaire.com>2011-05-20 14:46:10 -0400
committerRoland Dreier <roland@purestorage.com>2011-05-20 14:46:10 -0400
commitfd75c789abf7948e16fe50917a6acb809927719a (patch)
treee85ee47f2a5575e2f4f9398da43d9ca82fc275f9 /drivers/infiniband
parent257313b2a87795e07a0bdf58d0fffbdba8b31051 (diff)
RDMA: Add error handling to ib_core_init()
Fail RDMA midlayer initialization if sysfs setup fails. Signed-off-by: Nir Muchtar <nirm@voltaire.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/core/device.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index f793bf2f5da7..46a7a3febc12 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -725,16 +725,24 @@ static int __init ib_core_init(void)
725 return -ENOMEM; 725 return -ENOMEM;
726 726
727 ret = ib_sysfs_setup(); 727 ret = ib_sysfs_setup();
728 if (ret) 728 if (ret) {
729 printk(KERN_WARNING "Couldn't create InfiniBand device class\n"); 729 printk(KERN_WARNING "Couldn't create InfiniBand device class\n");
730 goto err;
731 }
730 732
731 ret = ib_cache_setup(); 733 ret = ib_cache_setup();
732 if (ret) { 734 if (ret) {
733 printk(KERN_WARNING "Couldn't set up InfiniBand P_Key/GID cache\n"); 735 printk(KERN_WARNING "Couldn't set up InfiniBand P_Key/GID cache\n");
734 ib_sysfs_cleanup(); 736 goto err_sysfs;
735 destroy_workqueue(ib_wq);
736 } 737 }
737 738
739 return 0;
740
741err_sysfs:
742 ib_sysfs_cleanup();
743
744err:
745 destroy_workqueue(ib_wq);
738 return ret; 746 return ret;
739} 747}
740 748