vfs: Generalize filesystem nodev handling.
Introduce a function may_open_dev that tests MNT_NODEV and a new superblock flab SB_I_NODEV. Use this new function in all of the places where MNT_NODEV was previously tested. Add the new SB_I_NODEV s_iflag to proc, sysfs, and mqueuefs as those filesystems should never support device nodes, and a simple superblock flags makes that very hard to get wrong. With SB_I_NODEV set if any device nodes somehow manage to show up on on a filesystem those device nodes will be unopenable. Acked-by: Seth Forshee <seth.forshee@canonical.com> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
@@ -1857,7 +1857,7 @@ struct block_device *lookup_bdev(const char *pathname)
|
||||
if (!S_ISBLK(inode->i_mode))
|
||||
goto fail;
|
||||
error = -EACCES;
|
||||
if (path.mnt->mnt_flags & MNT_NODEV)
|
||||
if (!may_open_dev(&path))
|
||||
goto fail;
|
||||
error = -ENOMEM;
|
||||
bdev = bd_acquire(inode);
|
||||
|
Reference in New Issue
Block a user