Commit d8c9584e authored by Al Viro's avatar Al Viro

vfs: prefer ->dentry->d_sb to ->mnt->mnt_sb

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent ece2ccb6
...@@ -194,7 +194,7 @@ static int find_autofs_mount(const char *pathname, ...@@ -194,7 +194,7 @@ static int find_autofs_mount(const char *pathname,
return err; return err;
err = -ENOENT; err = -ENOENT;
while (path.dentry == path.mnt->mnt_root) { while (path.dentry == path.mnt->mnt_root) {
if (path.mnt->mnt_sb->s_magic == AUTOFS_SUPER_MAGIC) { if (path.dentry->d_sb->s_magic == AUTOFS_SUPER_MAGIC) {
if (test(&path, data)) { if (test(&path, data)) {
path_get(&path); path_get(&path);
if (!err) /* already found some */ if (!err) /* already found some */
...@@ -212,7 +212,7 @@ static int find_autofs_mount(const char *pathname, ...@@ -212,7 +212,7 @@ static int find_autofs_mount(const char *pathname,
static int test_by_dev(struct path *path, void *p) static int test_by_dev(struct path *path, void *p)
{ {
return path->mnt->mnt_sb->s_dev == *(dev_t *)p; return path->dentry->d_sb->s_dev == *(dev_t *)p;
} }
static int test_by_type(struct path *path, void *p) static int test_by_type(struct path *path, void *p)
...@@ -538,11 +538,11 @@ static int autofs_dev_ioctl_ismountpoint(struct file *fp, ...@@ -538,11 +538,11 @@ static int autofs_dev_ioctl_ismountpoint(struct file *fp,
err = find_autofs_mount(name, &path, test_by_type, &type); err = find_autofs_mount(name, &path, test_by_type, &type);
if (err) if (err)
goto out; goto out;
devid = new_encode_dev(path.mnt->mnt_sb->s_dev); devid = new_encode_dev(path.dentry->d_sb->s_dev);
err = 0; err = 0;
if (path.mnt->mnt_root == path.dentry) { if (path.mnt->mnt_root == path.dentry) {
err = 1; err = 1;
magic = path.mnt->mnt_sb->s_magic; magic = path.dentry->d_sb->s_magic;
} }
} else { } else {
dev_t dev = sbi->sb->s_dev; dev_t dev = sbi->sb->s_dev;
...@@ -556,7 +556,7 @@ static int autofs_dev_ioctl_ismountpoint(struct file *fp, ...@@ -556,7 +556,7 @@ static int autofs_dev_ioctl_ismountpoint(struct file *fp,
err = have_submounts(path.dentry); err = have_submounts(path.dentry);
if (follow_down_one(&path)) if (follow_down_one(&path))
magic = path.mnt->mnt_sb->s_magic; magic = path.dentry->d_sb->s_magic;
} }
param->ismountpoint.out.devid = devid; param->ismountpoint.out.devid = devid;
......
...@@ -560,7 +560,7 @@ static ssize_t bm_entry_write(struct file *file, const char __user *buffer, ...@@ -560,7 +560,7 @@ static ssize_t bm_entry_write(struct file *file, const char __user *buffer,
break; break;
case 2: set_bit(Enabled, &e->flags); case 2: set_bit(Enabled, &e->flags);
break; break;
case 3: root = dget(file->f_path.mnt->mnt_sb->s_root); case 3: root = dget(file->f_path.dentry->d_sb->s_root);
mutex_lock(&root->d_inode->i_mutex); mutex_lock(&root->d_inode->i_mutex);
kill_node(e); kill_node(e);
...@@ -587,7 +587,7 @@ static ssize_t bm_register_write(struct file *file, const char __user *buffer, ...@@ -587,7 +587,7 @@ static ssize_t bm_register_write(struct file *file, const char __user *buffer,
Node *e; Node *e;
struct inode *inode; struct inode *inode;
struct dentry *root, *dentry; struct dentry *root, *dentry;
struct super_block *sb = file->f_path.mnt->mnt_sb; struct super_block *sb = file->f_path.dentry->d_sb;
int err = 0; int err = 0;
e = create_entry(buffer, count); e = create_entry(buffer, count);
...@@ -666,7 +666,7 @@ static ssize_t bm_status_write(struct file * file, const char __user * buffer, ...@@ -666,7 +666,7 @@ static ssize_t bm_status_write(struct file * file, const char __user * buffer,
switch (res) { switch (res) {
case 1: enabled = 0; break; case 1: enabled = 0; break;
case 2: enabled = 1; break; case 2: enabled = 1; break;
case 3: root = dget(file->f_path.mnt->mnt_sb->s_root); case 3: root = dget(file->f_path.dentry->d_sb->s_root);
mutex_lock(&root->d_inode->i_mutex); mutex_lock(&root->d_inode->i_mutex);
while (!list_empty(&entries)) while (!list_empty(&entries))
......
...@@ -2909,7 +2909,7 @@ static int ext3_quota_on(struct super_block *sb, int type, int format_id, ...@@ -2909,7 +2909,7 @@ static int ext3_quota_on(struct super_block *sb, int type, int format_id,
return -EINVAL; return -EINVAL;
/* Quotafile not on the same filesystem? */ /* Quotafile not on the same filesystem? */
if (path->mnt->mnt_sb != sb) if (path->dentry->d_sb != sb)
return -EXDEV; return -EXDEV;
/* Journaling quota? */ /* Journaling quota? */
if (EXT3_SB(sb)->s_qf_names[type]) { if (EXT3_SB(sb)->s_qf_names[type]) {
......
...@@ -4781,7 +4781,7 @@ static int ext4_quota_on(struct super_block *sb, int type, int format_id, ...@@ -4781,7 +4781,7 @@ static int ext4_quota_on(struct super_block *sb, int type, int format_id,
return -EINVAL; return -EINVAL;
/* Quotafile not on the same filesystem? */ /* Quotafile not on the same filesystem? */
if (path->mnt->mnt_sb != sb) if (path->dentry->d_sb != sb)
return -EXDEV; return -EXDEV;
/* Journaling quota? */ /* Journaling quota? */
if (EXT4_SB(sb)->s_qf_names[type]) { if (EXT4_SB(sb)->s_qf_names[type]) {
......
...@@ -25,8 +25,8 @@ static long do_sys_name_to_handle(struct path *path, ...@@ -25,8 +25,8 @@ static long do_sys_name_to_handle(struct path *path,
* We need t make sure wether the file system * We need t make sure wether the file system
* support decoding of the file handle * support decoding of the file handle
*/ */
if (!path->mnt->mnt_sb->s_export_op || if (!path->dentry->d_sb->s_export_op ||
!path->mnt->mnt_sb->s_export_op->fh_to_dentry) !path->dentry->d_sb->s_export_op->fh_to_dentry)
return -EOPNOTSUPP; return -EOPNOTSUPP;
if (copy_from_user(&f_handle, ufh, sizeof(struct file_handle))) if (copy_from_user(&f_handle, ufh, sizeof(struct file_handle)))
......
...@@ -403,7 +403,7 @@ nlmsvc_match_sb(void *datap, struct nlm_file *file) ...@@ -403,7 +403,7 @@ nlmsvc_match_sb(void *datap, struct nlm_file *file)
{ {
struct super_block *sb = datap; struct super_block *sb = datap;
return sb == file->f_file->f_path.mnt->mnt_sb; return sb == file->f_file->f_path.dentry->d_sb;
} }
/** /**
......
...@@ -272,7 +272,7 @@ static ssize_t write_unlock_fs(struct file *file, char *buf, size_t size) ...@@ -272,7 +272,7 @@ static ssize_t write_unlock_fs(struct file *file, char *buf, size_t size)
* 2. Is that directory a mount point, or * 2. Is that directory a mount point, or
* 3. Is that directory the root of an exported file system? * 3. Is that directory the root of an exported file system?
*/ */
error = nlmsvc_unlock_all_by_sb(path.mnt->mnt_sb); error = nlmsvc_unlock_all_by_sb(path.dentry->d_sb);
path_put(&path); path_put(&path);
return error; return error;
......
...@@ -2198,7 +2198,7 @@ int dquot_quota_on(struct super_block *sb, int type, int format_id, ...@@ -2198,7 +2198,7 @@ int dquot_quota_on(struct super_block *sb, int type, int format_id,
if (error) if (error)
return error; return error;
/* Quota file not on the same filesystem? */ /* Quota file not on the same filesystem? */
if (path->mnt->mnt_sb != sb) if (path->dentry->d_sb != sb)
error = -EXDEV; error = -EXDEV;
else else
error = vfs_load_quota_inode(path->dentry->d_inode, type, error = vfs_load_quota_inode(path->dentry->d_inode, type,
......
...@@ -2058,7 +2058,7 @@ static int reiserfs_quota_on(struct super_block *sb, int type, int format_id, ...@@ -2058,7 +2058,7 @@ static int reiserfs_quota_on(struct super_block *sb, int type, int format_id,
return -EINVAL; return -EINVAL;
/* Quotafile not on the same filesystem? */ /* Quotafile not on the same filesystem? */
if (path->mnt->mnt_sb != sb) { if (path->dentry->d_sb != sb) {
err = -EXDEV; err = -EXDEV;
goto out; goto out;
} }
......
...@@ -442,7 +442,7 @@ static unsigned sysv_nblocks(struct super_block *s, loff_t size) ...@@ -442,7 +442,7 @@ static unsigned sysv_nblocks(struct super_block *s, loff_t size)
int sysv_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) int sysv_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
{ {
struct super_block *s = mnt->mnt_sb; struct super_block *s = dentry->d_sb;
generic_fillattr(dentry->d_inode, stat); generic_fillattr(dentry->d_inode, stat);
stat->blocks = (s->s_blocksize / 512) * sysv_nblocks(s, stat->size); stat->blocks = (s->s_blocksize / 512) * sysv_nblocks(s, stat->size);
stat->blksize = s->s_blocksize; stat->blksize = s->s_blocksize;
......
...@@ -325,17 +325,19 @@ static void __init get_fs_names(char *page) ...@@ -325,17 +325,19 @@ static void __init get_fs_names(char *page)
static int __init do_mount_root(char *name, char *fs, int flags, void *data) static int __init do_mount_root(char *name, char *fs, int flags, void *data)
{ {
struct super_block *s;
int err = sys_mount(name, "/root", fs, flags, data); int err = sys_mount(name, "/root", fs, flags, data);
if (err) if (err)
return err; return err;
sys_chdir((const char __user __force *)"/root"); sys_chdir((const char __user __force *)"/root");
ROOT_DEV = current->fs->pwd.mnt->mnt_sb->s_dev; s = current->fs->pwd.dentry->d_sb;
ROOT_DEV = s->s_dev;
printk(KERN_INFO printk(KERN_INFO
"VFS: Mounted root (%s filesystem)%s on device %u:%u.\n", "VFS: Mounted root (%s filesystem)%s on device %u:%u.\n",
current->fs->pwd.mnt->mnt_sb->s_type->name, s->s_type->name,
current->fs->pwd.mnt->mnt_sb->s_flags & MS_RDONLY ? s->s_flags & MS_RDONLY ? " readonly" : "",
" readonly" : "", MAJOR(ROOT_DEV), MINOR(ROOT_DEV)); MAJOR(ROOT_DEV), MINOR(ROOT_DEV));
return 0; return 0;
} }
......
...@@ -315,7 +315,7 @@ void acct_auto_close(struct super_block *sb) ...@@ -315,7 +315,7 @@ void acct_auto_close(struct super_block *sb)
spin_lock(&acct_lock); spin_lock(&acct_lock);
restart: restart:
list_for_each_entry(acct, &acct_list, list) list_for_each_entry(acct, &acct_list, list)
if (acct->file && acct->file->f_path.mnt->mnt_sb == sb) { if (acct->file && acct->file->f_path.dentry->d_sb == sb) {
acct_file_reopen(acct, NULL, NULL); acct_file_reopen(acct, NULL, NULL);
goto restart; goto restart;
} }
......
...@@ -2507,7 +2507,7 @@ static int selinux_mount(char *dev_name, ...@@ -2507,7 +2507,7 @@ static int selinux_mount(char *dev_name,
const struct cred *cred = current_cred(); const struct cred *cred = current_cred();
if (flags & MS_REMOUNT) if (flags & MS_REMOUNT)
return superblock_has_perm(cred, path->mnt->mnt_sb, return superblock_has_perm(cred, path->dentry->d_sb,
FILESYSTEM__REMOUNT, NULL); FILESYSTEM__REMOUNT, NULL);
else else
return path_has_perm(cred, path, FILE__MOUNTON); return path_has_perm(cred, path, FILE__MOUNTON);
......
...@@ -406,7 +406,7 @@ static int smack_sb_statfs(struct dentry *dentry) ...@@ -406,7 +406,7 @@ static int smack_sb_statfs(struct dentry *dentry)
static int smack_sb_mount(char *dev_name, struct path *path, static int smack_sb_mount(char *dev_name, struct path *path,
char *type, unsigned long flags, void *data) char *type, unsigned long flags, void *data)
{ {
struct superblock_smack *sbp = path->mnt->mnt_sb->s_security; struct superblock_smack *sbp = path->dentry->d_sb->s_security;
struct smk_audit_info ad; struct smk_audit_info ad;
smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH); smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
...@@ -435,7 +435,7 @@ static int smack_sb_umount(struct vfsmount *mnt, int flags) ...@@ -435,7 +435,7 @@ static int smack_sb_umount(struct vfsmount *mnt, int flags)
smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH); smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
smk_ad_setfield_u_fs_path(&ad, path); smk_ad_setfield_u_fs_path(&ad, path);
sbp = mnt->mnt_sb->s_security; sbp = path.dentry->d_sb->s_security;
return smk_curacc(sbp->smk_floor, MAY_WRITE, &ad); return smk_curacc(sbp->smk_floor, MAY_WRITE, &ad);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment