Linux-Fsdevel Archive on lore.kernel.org help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de> To: linux-kernel@vger.kernel.org Cc: "H. Peter Anvin" <hpa@zytor.com>, Song Liu <song@kernel.org>, Al Viro <viro@zeniv.linux.org.uk>, Linus Torvalds <torvalds@linux-foundation.org>, linux-raid@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH 16/17] init: open code setting up stdin/stdout/stderr Date: Thu, 9 Jul 2020 17:18:13 +0200 [thread overview] Message-ID: <20200709151814.110422-17-hch@lst.de> (raw) In-Reply-To: <20200709151814.110422-1-hch@lst.de> Don't rely on the implicit set_fs(KERNEL_DS) for ksys_open to work, but instead open a struct file for /dev/console and then install it as FD 0/1/2 manually. Signed-off-by: Christoph Hellwig <hch@lst.de> --- fs/file.c | 7 +------ include/linux/syscalls.h | 1 - init/main.c | 16 ++++++++++------ 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/fs/file.c b/fs/file.c index abb8b7081d7a44..85b7993165dd2f 100644 --- a/fs/file.c +++ b/fs/file.c @@ -985,7 +985,7 @@ SYSCALL_DEFINE2(dup2, unsigned int, oldfd, unsigned int, newfd) return ksys_dup3(oldfd, newfd, 0); } -int ksys_dup(unsigned int fildes) +SYSCALL_DEFINE1(dup, unsigned int, fildes) { int ret = -EBADF; struct file *file = fget_raw(fildes); @@ -1000,11 +1000,6 @@ int ksys_dup(unsigned int fildes) return ret; } -SYSCALL_DEFINE1(dup, unsigned int, fildes) -{ - return ksys_dup(fildes); -} - int f_dupfd(unsigned int from, struct file *file, unsigned flags) { int err; diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index e8810d75efa9b0..59af62090ac400 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -1237,7 +1237,6 @@ asmlinkage long sys_ni_syscall(void); */ int ksys_umount(char __user *name, int flags); -int ksys_dup(unsigned int fildes); int ksys_chroot(const char __user *filename); ssize_t ksys_write(unsigned int fd, const char __user *buf, size_t count); int ksys_chdir(const char __user *filename); diff --git a/init/main.c b/init/main.c index 0ead83e86b5aa2..db0621dfbb0468 100644 --- a/init/main.c +++ b/init/main.c @@ -1457,15 +1457,19 @@ static int __ref kernel_init(void *unused) "See Linux Documentation/admin-guide/init.rst for guidance."); } +/* Open /dev/console, for stdin/stdout/stderr, this should never fail */ void console_on_rootfs(void) { - /* Open the /dev/console as stdin, this should never fail */ - if (ksys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0) - pr_err("Warning: unable to open an initial console.\n"); + struct file *file = filp_open("/dev/console", O_RDWR, 0); - /* create stdout/stderr */ - (void) ksys_dup(0); - (void) ksys_dup(0); + if (IS_ERR(file)) { + pr_err("Warning: unable to open an initial console.\n"); + return; + } + get_file_rcu_many(file, 2); + fd_install(get_unused_fd_flags(0), file); + fd_install(get_unused_fd_flags(0), file); + fd_install(get_unused_fd_flags(0), file); } static noinline void __init kernel_init_freeable(void) -- 2.26.2
next prev parent reply other threads:[~2020-07-09 15:18 UTC|newest] Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-07-09 15:17 decruft the early init / initrd / initramfs code v2 Christoph Hellwig 2020-07-09 15:17 ` [PATCH 01/17] init: remove the bstat helper Christoph Hellwig 2020-07-09 15:17 ` [PATCH 02/17] md: move the early init autodetect code to drivers/md/ Christoph Hellwig 2020-07-09 15:18 ` [PATCH 03/17] md: replace the RAID_AUTORUN ioctl with a direct function call Christoph Hellwig 2020-07-09 15:18 ` [PATCH 04/17] md: remove the autoscan partition re-read Christoph Hellwig 2020-07-09 15:18 ` [PATCH 05/17] md: remove the kernel version of md_u.h Christoph Hellwig 2020-07-09 15:18 ` [PATCH 06/17] md: simplify md_setup_drive Christoph Hellwig 2020-07-09 15:18 ` [PATCH 07/17] md: rewrite md_setup_drive to avoid ioctls Christoph Hellwig 2020-07-09 15:18 ` [PATCH 08/17] initrd: remove support for multiple floppies Christoph Hellwig 2020-07-09 15:18 ` [PATCH 09/17] initrd: remove the BLKFLSBUF call in handle_initrd Christoph Hellwig 2020-07-09 15:18 ` [PATCH 10/17] initrd: switch initrd loading to struct file based APIs Christoph Hellwig 2020-07-09 15:18 ` [PATCH 11/17] initrd: mark init_linuxrc as __init Christoph Hellwig 2020-07-09 15:18 ` [PATCH 12/17] initrd: mark initrd support as deprecated Christoph Hellwig 2020-07-09 15:18 ` [PATCH 13/17] initramfs: remove the populate_initrd_image and clean_rootfs stubs Christoph Hellwig 2020-07-09 15:18 ` [PATCH 14/17] initramfs: simplify clean_rootfs Christoph Hellwig 2020-07-09 15:18 ` [PATCH 15/17] initramfs: switch initramfs unpacking to struct file based APIs Christoph Hellwig 2020-07-09 18:07 ` Linus Torvalds 2020-07-09 18:12 ` Christoph Hellwig 2020-07-09 18:23 ` Linus Torvalds 2020-07-09 15:18 ` Christoph Hellwig [this message] 2020-07-09 18:32 ` [PATCH 16/17] init: open code setting up stdin/stdout/stderr Brian Gerst 2020-07-09 15:18 ` [PATCH 17/17] fs: remove ksys_open Christoph Hellwig 2020-07-09 18:08 ` decruft the early init / initrd / initramfs code v2 Linus Torvalds 2020-07-09 23:32 ` hpa 2020-07-14 6:41 ` Christoph Hellwig 2020-07-14 16:20 ` Song Liu
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200709151814.110422-17-hch@lst.de \ --to=hch@lst.de \ --cc=hpa@zytor.com \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-raid@vger.kernel.org \ --cc=song@kernel.org \ --cc=torvalds@linux-foundation.org \ --cc=viro@zeniv.linux.org.uk \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).