fibmap: Use bmap instead of ->bmap method in ioctl_fibmap

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>
This commit is contained in:
Carlos Maiolino 2020-01-09 14:30:44 +01:00 committed by Al Viro
parent 569d2056de
commit 0d89fdae2a

View file

@ -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;
}
/**