diff options
Diffstat (limited to 'drivers/infiniband/hw/bnxt_re/main.c')
| -rw-r--r-- | drivers/infiniband/hw/bnxt_re/main.c | 3 | 
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c index cf2282654210..77f095e5fbe3 100644 --- a/drivers/infiniband/hw/bnxt_re/main.c +++ b/drivers/infiniband/hw/bnxt_re/main.c @@ -1268,6 +1268,7 @@ static int bnxt_re_ib_reg(struct bnxt_re_dev *rdev)  	/* Registered a new RoCE device instance to netdev */  	rc = bnxt_re_register_netdev(rdev);  	if (rc) { +		rtnl_unlock();  		pr_err("Failed to register with netedev: %#x\n", rc);  		return -EINVAL;  	} @@ -1466,6 +1467,7 @@ static void bnxt_re_task(struct work_struct *work)  				"Failed to register with IB: %#x", rc);  			bnxt_re_remove_one(rdev);  			bnxt_re_dev_unreg(rdev); +			goto exit;  		}  		break;  	case NETDEV_UP: @@ -1489,6 +1491,7 @@ static void bnxt_re_task(struct work_struct *work)  	}  	smp_mb__before_atomic();  	atomic_dec(&rdev->sched_count); +exit:  	kfree(re_work);  }  | 
