Merge tag 'pull-stable-struct_fd' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull 'struct fd' updates from Al Viro: "Just the 'struct fd' layout change, with conversion to accessor helpers" * tag 'pull-stable-struct_fd' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: add struct fd constructors, get rid of __to_fd() struct fd: representation change introduce fd_file(), convert all accessors to it.
This commit is contained in:
@@ -1068,10 +1068,10 @@ void ima_kexec_cmdline(int kernel_fd, const void *buf, int size)
|
||||
return;
|
||||
|
||||
f = fdget(kernel_fd);
|
||||
if (!f.file)
|
||||
if (!fd_file(f))
|
||||
return;
|
||||
|
||||
process_buffer_measurement(file_mnt_idmap(f.file), file_inode(f.file),
|
||||
process_buffer_measurement(file_mnt_idmap(fd_file(f)), file_inode(fd_file(f)),
|
||||
buf, size, "kexec-cmdline", KEXEC_CMDLINE, 0,
|
||||
NULL, false, NULL, 0);
|
||||
fdput(f);
|
||||
|
||||
@@ -238,19 +238,19 @@ static struct landlock_ruleset *get_ruleset_from_fd(const int fd,
|
||||
struct landlock_ruleset *ruleset;
|
||||
|
||||
ruleset_f = fdget(fd);
|
||||
if (!ruleset_f.file)
|
||||
if (!fd_file(ruleset_f))
|
||||
return ERR_PTR(-EBADF);
|
||||
|
||||
/* Checks FD type and access right. */
|
||||
if (ruleset_f.file->f_op != &ruleset_fops) {
|
||||
if (fd_file(ruleset_f)->f_op != &ruleset_fops) {
|
||||
ruleset = ERR_PTR(-EBADFD);
|
||||
goto out_fdput;
|
||||
}
|
||||
if (!(ruleset_f.file->f_mode & mode)) {
|
||||
if (!(fd_file(ruleset_f)->f_mode & mode)) {
|
||||
ruleset = ERR_PTR(-EPERM);
|
||||
goto out_fdput;
|
||||
}
|
||||
ruleset = ruleset_f.file->private_data;
|
||||
ruleset = fd_file(ruleset_f)->private_data;
|
||||
if (WARN_ON_ONCE(ruleset->num_layers != 1)) {
|
||||
ruleset = ERR_PTR(-EINVAL);
|
||||
goto out_fdput;
|
||||
@@ -277,22 +277,22 @@ static int get_path_from_fd(const s32 fd, struct path *const path)
|
||||
|
||||
/* Handles O_PATH. */
|
||||
f = fdget_raw(fd);
|
||||
if (!f.file)
|
||||
if (!fd_file(f))
|
||||
return -EBADF;
|
||||
/*
|
||||
* Forbids ruleset FDs, internal filesystems (e.g. nsfs), including
|
||||
* pseudo filesystems that will never be mountable (e.g. sockfs,
|
||||
* pipefs).
|
||||
*/
|
||||
if ((f.file->f_op == &ruleset_fops) ||
|
||||
(f.file->f_path.mnt->mnt_flags & MNT_INTERNAL) ||
|
||||
(f.file->f_path.dentry->d_sb->s_flags & SB_NOUSER) ||
|
||||
d_is_negative(f.file->f_path.dentry) ||
|
||||
IS_PRIVATE(d_backing_inode(f.file->f_path.dentry))) {
|
||||
if ((fd_file(f)->f_op == &ruleset_fops) ||
|
||||
(fd_file(f)->f_path.mnt->mnt_flags & MNT_INTERNAL) ||
|
||||
(fd_file(f)->f_path.dentry->d_sb->s_flags & SB_NOUSER) ||
|
||||
d_is_negative(fd_file(f)->f_path.dentry) ||
|
||||
IS_PRIVATE(d_backing_inode(fd_file(f)->f_path.dentry))) {
|
||||
err = -EBADFD;
|
||||
goto out_fdput;
|
||||
}
|
||||
*path = f.file->f_path;
|
||||
*path = fd_file(f)->f_path;
|
||||
path_get(path);
|
||||
|
||||
out_fdput:
|
||||
|
||||
@@ -296,7 +296,7 @@ static int read_trusted_verity_root_digests(unsigned int fd)
|
||||
return -EPERM;
|
||||
|
||||
f = fdget(fd);
|
||||
if (!f.file)
|
||||
if (!fd_file(f))
|
||||
return -EINVAL;
|
||||
|
||||
data = kzalloc(SZ_4K, GFP_KERNEL);
|
||||
@@ -305,7 +305,7 @@ static int read_trusted_verity_root_digests(unsigned int fd)
|
||||
goto err;
|
||||
}
|
||||
|
||||
rc = kernel_read_file(f.file, 0, (void **)&data, SZ_4K - 1, NULL, READING_POLICY);
|
||||
rc = kernel_read_file(fd_file(f), 0, (void **)&data, SZ_4K - 1, NULL, READING_POLICY);
|
||||
if (rc < 0)
|
||||
goto err;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user