Skip to content

Commit 281117c

Browse files
author
Al Viro
committed
convert setns(2) to fdget()/fdput()
Reviewed-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
1 parent fe15c26 commit 281117c

1 file changed

Lines changed: 8 additions & 9 deletions

File tree

kernel/nsproxy.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -545,21 +545,20 @@ static void commit_nsset(struct nsset *nsset)
545545

546546
SYSCALL_DEFINE2(setns, int, fd, int, flags)
547547
{
548-
struct file *file;
548+
struct fd f = fdget(fd);
549549
struct ns_common *ns = NULL;
550550
struct nsset nsset = {};
551551
int err = 0;
552552

553-
file = fget(fd);
554-
if (!file)
553+
if (!f.file)
555554
return -EBADF;
556555

557-
if (proc_ns_file(file)) {
558-
ns = get_proc_ns(file_inode(file));
556+
if (proc_ns_file(f.file)) {
557+
ns = get_proc_ns(file_inode(f.file));
559558
if (flags && (ns->ops->type != flags))
560559
err = -EINVAL;
561560
flags = ns->ops->type;
562-
} else if (!IS_ERR(pidfd_pid(file))) {
561+
} else if (!IS_ERR(pidfd_pid(f.file))) {
563562
err = check_setns_flags(flags);
564563
} else {
565564
err = -EINVAL;
@@ -571,17 +570,17 @@ SYSCALL_DEFINE2(setns, int, fd, int, flags)
571570
if (err)
572571
goto out;
573572

574-
if (proc_ns_file(file))
573+
if (proc_ns_file(f.file))
575574
err = validate_ns(&nsset, ns);
576575
else
577-
err = validate_nsset(&nsset, file->private_data);
576+
err = validate_nsset(&nsset, f.file->private_data);
578577
if (!err) {
579578
commit_nsset(&nsset);
580579
perf_event_namespaces(current);
581580
}
582581
put_nsset(&nsset);
583582
out:
584-
fput(file);
583+
fdput(f);
585584
return err;
586585
}
587586

0 commit comments

Comments
 (0)