diff options
Diffstat (limited to 'drivers/infiniband/core')
| -rw-r--r-- | drivers/infiniband/core/nldev.c | 2 | ||||
| -rw-r--r-- | drivers/infiniband/core/ucma.c | 19 | ||||
| -rw-r--r-- | drivers/infiniband/core/uverbs_cmd.c | 8 | 
3 files changed, 11 insertions, 18 deletions
| diff --git a/drivers/infiniband/core/nldev.c b/drivers/infiniband/core/nldev.c index 39f89a4b8649..7dc8e2ec62cc 100644 --- a/drivers/infiniband/core/nldev.c +++ b/drivers/infiniband/core/nldev.c @@ -2816,6 +2816,8 @@ int rdma_nl_notify_event(struct ib_device *device, u32 port_num,  	nlh = nlmsg_put(skb, 0, 0,  			RDMA_NL_GET_TYPE(RDMA_NL_NLDEV, RDMA_NLDEV_CMD_MONITOR),  			0, 0); +	if (!nlh) +		goto err_free;  	switch (type) {  	case RDMA_REGISTER_EVENT: diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c index 5dbb248e9625..02f1666f3cba 100644 --- a/drivers/infiniband/core/ucma.c +++ b/drivers/infiniband/core/ucma.c @@ -1615,7 +1615,6 @@ static ssize_t ucma_migrate_id(struct ucma_file *new_file,  	struct ucma_event *uevent, *tmp;  	struct ucma_context *ctx;  	LIST_HEAD(event_list); -	struct fd f;  	struct ucma_file *cur_file;  	int ret = 0; @@ -1623,21 +1622,17 @@ static ssize_t ucma_migrate_id(struct ucma_file *new_file,  		return -EFAULT;  	/* Get current fd to protect against it being closed */ -	f = fdget(cmd.fd); -	if (!fd_file(f)) +	CLASS(fd, f)(cmd.fd); +	if (fd_empty(f))  		return -ENOENT; -	if (fd_file(f)->f_op != &ucma_fops) { -		ret = -EINVAL; -		goto file_put; -	} +	if (fd_file(f)->f_op != &ucma_fops) +		return -EINVAL;  	cur_file = fd_file(f)->private_data;  	/* Validate current fd and prevent destruction of id. */  	ctx = ucma_get_ctx(cur_file, cmd.id); -	if (IS_ERR(ctx)) { -		ret = PTR_ERR(ctx); -		goto file_put; -	} +	if (IS_ERR(ctx)) +		return PTR_ERR(ctx);  	rdma_lock_handler(ctx->cm_id);  	/* @@ -1678,8 +1673,6 @@ static ssize_t ucma_migrate_id(struct ucma_file *new_file,  err_unlock:  	rdma_unlock_handler(ctx->cm_id);  	ucma_put_ctx(ctx); -file_put: -	fdput(f);  	return ret;  } diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c index a4cce360df21..66b02fbf077a 100644 --- a/drivers/infiniband/core/uverbs_cmd.c +++ b/drivers/infiniband/core/uverbs_cmd.c @@ -584,7 +584,7 @@ static int ib_uverbs_open_xrcd(struct uverbs_attr_bundle *attrs)  	if (cmd.fd != -1) {  		/* search for file descriptor */  		f = fdget(cmd.fd); -		if (!fd_file(f)) { +		if (fd_empty(f)) {  			ret = -EBADF;  			goto err_tree_mutex_unlock;  		} @@ -632,8 +632,7 @@ static int ib_uverbs_open_xrcd(struct uverbs_attr_bundle *attrs)  		atomic_inc(&xrcd->usecnt);  	} -	if (fd_file(f)) -		fdput(f); +	fdput(f);  	mutex_unlock(&ibudev->xrcd_tree_mutex);  	uobj_finalize_uobj_create(&obj->uobject, attrs); @@ -648,8 +647,7 @@ err:  	uobj_alloc_abort(&obj->uobject, attrs);  err_tree_mutex_unlock: -	if (fd_file(f)) -		fdput(f); +	fdput(f);  	mutex_unlock(&ibudev->xrcd_tree_mutex); | 
