static struct super_block *quotactl_block(const char __user *special, int cmd)
{
#ifdef CONFIG_BLOCK
- struct block_device *bdev;
struct super_block *sb;
struct filename *tmp = getname(special);
bool excl = false, thawed = false;
+ int error;
+ dev_t dev;
if (IS_ERR(tmp))
return ERR_CAST(tmp);
- bdev = lookup_bdev(tmp->name);
+ error = lookup_bdev(tmp->name, &dev);
putname(tmp);
- if (IS_ERR(bdev))
- return ERR_CAST(bdev);
+ if (error)
+ return ERR_PTR(error);
if (quotactl_cmd_onoff(cmd)) {
excl = true;
}
retry:
- sb = __get_super(bdev, excl);
- if (thawed && sb && sb->s_writers.frozen != SB_UNFROZEN) {
+ sb = user_get_super(dev, excl);
+ if (!sb)
+ return ERR_PTR(-ENODEV);
+ if (thawed && sb->s_writers.frozen != SB_UNFROZEN) {
if (excl)
up_write(&sb->s_umount);
else
put_super(sb);
goto retry;
}
-
- bdput(bdev);
- if (!sb)
- return ERR_PTR(-ENODEV);
return sb;
#else