IB/qib: Cleanup qib_register_observer()

Returning directly is easier to read than do-nothing gotos.  Remove the
duplicative check on "olp" and pull the code in one indent level.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
Dan Carpenter
2014-01-30 15:12:31 +03:00
committed by Roland Dreier
parent 49c0e2414b
commit 186f8ba062
+10 -15
View File
@@ -694,28 +694,23 @@ int qib_register_observer(struct qib_devdata *dd,
const struct diag_observer *op) const struct diag_observer *op)
{ {
struct diag_observer_list_elt *olp; struct diag_observer_list_elt *olp;
int ret = -EINVAL; unsigned long flags;
if (!dd || !op) if (!dd || !op)
goto bail; return -EINVAL;
ret = -ENOMEM;
olp = vmalloc(sizeof *olp); olp = vmalloc(sizeof *olp);
if (!olp) { if (!olp) {
pr_err("vmalloc for observer failed\n"); pr_err("vmalloc for observer failed\n");
goto bail; return -ENOMEM;
} }
if (olp) {
unsigned long flags;
spin_lock_irqsave(&dd->qib_diag_trans_lock, flags); spin_lock_irqsave(&dd->qib_diag_trans_lock, flags);
olp->op = op; olp->op = op;
olp->next = dd->diag_observer_list; olp->next = dd->diag_observer_list;
dd->diag_observer_list = olp; dd->diag_observer_list = olp;
spin_unlock_irqrestore(&dd->qib_diag_trans_lock, flags); spin_unlock_irqrestore(&dd->qib_diag_trans_lock, flags);
ret = 0;
} return 0;
bail:
return ret;
} }
/* Remove all registered observers when device is closed */ /* Remove all registered observers when device is closed */