Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

RDMA/(core, ulp): Convert register/unregister event handler to be void

The functions ib_register_event_handler() and
ib_unregister_event_handler() always returned success and they can't fail.

Let's convert those functions to be void, remove redundant checks and
cleanup tons of goto statements.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>

authored by

Leon Romanovsky and committed by
Doug Ledford
dcc9881e 55f2467c

+20 -59
+8 -15
drivers/infiniband/core/cache.c
··· 1199 1199 device->cache.ports = 1200 1200 kzalloc(sizeof(*device->cache.ports) * 1201 1201 (rdma_end_port(device) - rdma_start_port(device) + 1), GFP_KERNEL); 1202 - if (!device->cache.ports) { 1203 - err = -ENOMEM; 1204 - goto out; 1205 - } 1202 + if (!device->cache.ports) 1203 + return -ENOMEM; 1206 1204 1207 1205 err = gid_table_setup_one(device); 1208 - if (err) 1209 - goto out; 1206 + if (err) { 1207 + kfree(device->cache.ports); 1208 + device->cache.ports = NULL; 1209 + return err; 1210 + } 1210 1211 1211 1212 for (p = 0; p <= rdma_end_port(device) - rdma_start_port(device); ++p) 1212 1213 ib_cache_update(device, p + rdma_start_port(device), true); 1213 1214 1214 1215 INIT_IB_EVENT_HANDLER(&device->cache.event_handler, 1215 1216 device, ib_cache_event); 1216 - err = ib_register_event_handler(&device->cache.event_handler); 1217 - if (err) 1218 - goto err; 1219 - 1217 + ib_register_event_handler(&device->cache.event_handler); 1220 1218 return 0; 1221 - 1222 - err: 1223 - gid_table_cleanup_one(device); 1224 - out: 1225 - return err; 1226 1219 } 1227 1220 1228 1221 void ib_cache_release_one(struct ib_device *device)
+2 -6
drivers/infiniband/core/device.c
··· 747 747 * chapter 11 of the InfiniBand Architecture Specification). This 748 748 * callback may occur in interrupt context. 749 749 */ 750 - int ib_register_event_handler (struct ib_event_handler *event_handler) 750 + void ib_register_event_handler(struct ib_event_handler *event_handler) 751 751 { 752 752 unsigned long flags; 753 753 ··· 755 755 list_add_tail(&event_handler->list, 756 756 &event_handler->device->event_handler_list); 757 757 spin_unlock_irqrestore(&event_handler->device->event_handler_lock, flags); 758 - 759 - return 0; 760 758 } 761 759 EXPORT_SYMBOL(ib_register_event_handler); 762 760 ··· 765 767 * Unregister an event handler registered with 766 768 * ib_register_event_handler(). 767 769 */ 768 - int ib_unregister_event_handler(struct ib_event_handler *event_handler) 770 + void ib_unregister_event_handler(struct ib_event_handler *event_handler) 769 771 { 770 772 unsigned long flags; 771 773 772 774 spin_lock_irqsave(&event_handler->device->event_handler_lock, flags); 773 775 list_del(&event_handler->list); 774 776 spin_unlock_irqrestore(&event_handler->device->event_handler_lock, flags); 775 - 776 - return 0; 777 777 } 778 778 EXPORT_SYMBOL(ib_unregister_event_handler); 779 779
+1 -2
drivers/infiniband/core/sa_query.c
··· 2417 2417 */ 2418 2418 2419 2419 INIT_IB_EVENT_HANDLER(&sa_dev->event_handler, device, ib_sa_event); 2420 - if (ib_register_event_handler(&sa_dev->event_handler)) 2421 - goto err; 2420 + ib_register_event_handler(&sa_dev->event_handler); 2422 2421 2423 2422 for (i = 0; i <= e - s; ++i) { 2424 2423 if (rdma_cap_ib_sa(device, i + 1))
+1 -12
drivers/infiniband/core/uverbs_main.c
··· 595 595 { 596 596 struct ib_uverbs_async_event_file *ev_file; 597 597 struct file *filp; 598 - int ret; 599 598 600 599 ev_file = kzalloc(sizeof(*ev_file), GFP_KERNEL); 601 600 if (!ev_file) ··· 620 621 INIT_IB_EVENT_HANDLER(&uverbs_file->event_handler, 621 622 ib_dev, 622 623 ib_uverbs_event_handler); 623 - ret = ib_register_event_handler(&uverbs_file->event_handler); 624 - if (ret) 625 - goto err_put_file; 626 - 624 + ib_register_event_handler(&uverbs_file->event_handler); 627 625 /* At that point async file stuff was fully set */ 628 626 629 627 return filp; 630 - 631 - err_put_file: 632 - fput(filp); 633 - kref_put(&uverbs_file->async_file->ref, 634 - ib_uverbs_release_async_event_file); 635 - uverbs_file->async_file = NULL; 636 - return ERR_PTR(ret); 637 628 638 629 err_put_refs: 639 630 kref_put(&ev_file->uverbs_file->ref, ib_uverbs_release_file);
+1 -9
drivers/infiniband/ulp/ipoib/ipoib_main.c
··· 2227 2227 2228 2228 INIT_IB_EVENT_HANDLER(&priv->event_handler, 2229 2229 priv->ca, ipoib_event); 2230 - result = ib_register_event_handler(&priv->event_handler); 2231 - if (result < 0) { 2232 - printk(KERN_WARNING "%s: ib_register_event_handler failed for " 2233 - "port %d (ret = %d)\n", 2234 - hca->name, port, result); 2235 - goto event_failed; 2236 - } 2230 + ib_register_event_handler(&priv->event_handler); 2237 2231 2238 2232 result = register_netdev(priv->dev); 2239 2233 if (result) { ··· 2260 2266 set_bit(IPOIB_STOP_NEIGH_GC, &priv->flags); 2261 2267 cancel_delayed_work(&priv->neigh_reap_task); 2262 2268 flush_workqueue(priv->wq); 2263 - 2264 - event_failed: 2265 2269 ipoib_dev_cleanup(priv->dev); 2266 2270 2267 2271 device_init_failed:
+2 -4
drivers/infiniband/ulp/iser/iser_verbs.c
··· 106 106 107 107 INIT_IB_EVENT_HANDLER(&device->event_handler, ib_dev, 108 108 iser_event_handler); 109 - if (ib_register_event_handler(&device->event_handler)) 110 - goto cq_err; 111 - 109 + ib_register_event_handler(&device->event_handler); 112 110 return 0; 113 111 114 112 cq_err: ··· 139 141 comp->cq = NULL; 140 142 } 141 143 142 - (void)ib_unregister_event_handler(&device->event_handler); 144 + ib_unregister_event_handler(&device->event_handler); 143 145 ib_dealloc_pd(device->pd); 144 146 145 147 kfree(device->comps);
+1 -6
drivers/infiniband/ulp/opa_vnic/opa_vnic_vema.c
··· 954 954 955 955 INIT_IB_EVENT_HANDLER(&port->event_handler, 956 956 cport->ibdev, opa_vnic_event); 957 - ret = ib_register_event_handler(&port->event_handler); 958 - if (ret) { 959 - c_err("port %d: event handler register failed\n", i); 960 - vema_unregister(cport); 961 - return ret; 962 - } 957 + ib_register_event_handler(&port->event_handler); 963 958 964 959 idr_init(&port->vport_idr); 965 960 mutex_init(&port->lock);
+2 -3
drivers/infiniband/ulp/srpt/ib_srpt.c
··· 2238 2238 cqe, first_wr); 2239 2239 cqe = NULL; 2240 2240 } 2241 - 2241 + 2242 2242 ret = ib_post_send(ch->qp, first_wr, &bad_wr); 2243 2243 if (ret) { 2244 2244 pr_err("%s: ib_post_send() returned %d for %d (avail: %d)\n", ··· 2530 2530 2531 2531 INIT_IB_EVENT_HANDLER(&sdev->event_handler, sdev->device, 2532 2532 srpt_event_handler); 2533 - if (ib_register_event_handler(&sdev->event_handler)) 2534 - goto err_cm; 2533 + ib_register_event_handler(&sdev->event_handler); 2535 2534 2536 2535 sdev->ioctx_ring = (struct srpt_recv_ioctx **) 2537 2536 srpt_alloc_ioctx_ring(sdev, sdev->srq_size,
+2 -2
include/rdma/ib_verbs.h
··· 2413 2413 enum ib_qp_type type, enum ib_qp_attr_mask mask, 2414 2414 enum rdma_link_layer ll); 2415 2415 2416 - int ib_register_event_handler (struct ib_event_handler *event_handler); 2417 - int ib_unregister_event_handler(struct ib_event_handler *event_handler); 2416 + void ib_register_event_handler(struct ib_event_handler *event_handler); 2417 + void ib_unregister_event_handler(struct ib_event_handler *event_handler); 2418 2418 void ib_dispatch_event(struct ib_event *event); 2419 2419 2420 2420 int ib_query_port(struct ib_device *device,