Skip to content

Commit

Permalink
fibmap: Use bmap instead of ->bmap method in ioctl_fibmap
Browse files Browse the repository at this point in the history
Now we have the possibility of proper error return in bmap, use bmap()
function in ioctl_fibmap() instead of calling ->bmap method directly.

Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Carlos Maiolino authored and Al Viro committed Feb 3, 2020
1 parent 569d205 commit 0d89fda
Showing 1 changed file with 20 additions and 10 deletions.
30 changes: 20 additions & 10 deletions fs/ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,29 @@ EXPORT_SYMBOL(vfs_ioctl);

static int ioctl_fibmap(struct file *filp, int __user *p)
{
struct address_space *mapping = filp->f_mapping;
int res, block;
struct inode *inode = file_inode(filp);
int error, ur_block;
sector_t block;

/* do we support this mess? */
if (!mapping->a_ops->bmap)
return -EINVAL;
if (!capable(CAP_SYS_RAWIO))
return -EPERM;
res = get_user(block, p);
if (res)
return res;
res = mapping->a_ops->bmap(mapping, block);
return put_user(res, p);

error = get_user(ur_block, p);
if (error)
return error;

block = ur_block;
error = bmap(inode, &block);

if (error)
ur_block = 0;
else
ur_block = block;

if (put_user(ur_block, p))
error = -EFAULT;

return error;
}

/**
Expand Down

0 comments on commit 0d89fda

Please sign in to comment.