Skip to content

Commit

Permalink
switch infinibarf users of fget() to fget_light()
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Al Viro committed Sep 27, 2012
1 parent 1d3653a commit 88b428d
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 14 deletions.
6 changes: 3 additions & 3 deletions drivers/infiniband/core/ucma.c
Original file line number Diff line number Diff line change
Expand Up @@ -1186,13 +1186,13 @@ static ssize_t ucma_migrate_id(struct ucma_file *new_file,
struct ucma_context *ctx;
struct file *filp;
struct ucma_file *cur_file;
int ret = 0;
int ret = 0, fput_needed;

if (copy_from_user(&cmd, inbuf, sizeof(cmd)))
return -EFAULT;

/* Get current fd to protect against it being closed */
filp = fget(cmd.fd);
filp = fget_light(cmd.fd, &fput_needed);
if (!filp)
return -ENOENT;

Expand Down Expand Up @@ -1231,7 +1231,7 @@ static ssize_t ucma_migrate_id(struct ucma_file *new_file,

ucma_put_ctx(ctx);
file_put:
fput(filp);
fput_light(filp, fput_needed);
return ret;
}

Expand Down
13 changes: 4 additions & 9 deletions drivers/infiniband/core/uverbs_cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -707,7 +707,7 @@ ssize_t ib_uverbs_open_xrcd(struct ib_uverbs_file *file,
struct ib_xrcd *xrcd = NULL;
struct file *f = NULL;
struct inode *inode = NULL;
int ret = 0;
int ret = 0, fput_needed;
int new_xrcd = 0;

if (out_len < sizeof resp)
Expand All @@ -724,18 +724,13 @@ ssize_t ib_uverbs_open_xrcd(struct ib_uverbs_file *file,

if (cmd.fd != -1) {
/* search for file descriptor */
f = fget(cmd.fd);
f = fget_light(cmd.fd, &fput_needed);
if (!f) {
ret = -EBADF;
goto err_tree_mutex_unlock;
}

inode = f->f_dentry->d_inode;
if (!inode) {
ret = -EBADF;
goto err_tree_mutex_unlock;
}

xrcd = find_xrcd(file->device, inode);
if (!xrcd && !(cmd.oflags & O_CREAT)) {
/* no file descriptor. Need CREATE flag */
Expand Down Expand Up @@ -801,7 +796,7 @@ ssize_t ib_uverbs_open_xrcd(struct ib_uverbs_file *file,
}

if (f)
fput(f);
fput_light(f, fput_needed);

mutex_lock(&file->mutex);
list_add_tail(&obj->uobject.list, &file->ucontext->xrcd_list);
Expand Down Expand Up @@ -831,7 +826,7 @@ ssize_t ib_uverbs_open_xrcd(struct ib_uverbs_file *file,

err_tree_mutex_unlock:
if (f)
fput(f);
fput_light(f, fput_needed);

mutex_unlock(&file->device->xrcd_tree_mutex);

Expand Down
5 changes: 3 additions & 2 deletions drivers/infiniband/core/uverbs_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -542,8 +542,9 @@ struct ib_uverbs_event_file *ib_uverbs_lookup_comp_file(int fd)
{
struct ib_uverbs_event_file *ev_file = NULL;
struct file *filp;
int fput_needed;

filp = fget(fd);
filp = fget_light(fd, &fput_needed);
if (!filp)
return NULL;

Expand All @@ -559,7 +560,7 @@ struct ib_uverbs_event_file *ib_uverbs_lookup_comp_file(int fd)
kref_get(&ev_file->ref);

out:
fput(filp);
fput_light(filp, fput_needed);
return ev_file;
}

Expand Down

0 comments on commit 88b428d

Please sign in to comment.