Commit 0d89fdae authored by Carlos Maiolino's avatar Carlos Maiolino Committed by Al Viro
Browse files

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: default avatarCarlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 569d2056
Loading
Loading
Loading
Loading
+20 −10
Original line number Diff line number Diff line
@@ -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;
}

/**