Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1142125ybl; Thu, 12 Dec 2019 10:15:32 -0800 (PST) X-Google-Smtp-Source: APXvYqxhqM/SsnYykKe7JLHZ1xQIUFWHEJvCo894Ms6dqXNHyT5iDFoC9orNg/bF53qlas9fd1XD X-Received: by 2002:a05:6830:139a:: with SMTP id d26mr9869951otq.75.1576174532295; Thu, 12 Dec 2019 10:15:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576174532; cv=none; d=google.com; s=arc-20160816; b=KpJAwB0s0advFFd5w5FboAHXm5dbFC0pELGafELBIKIykMPTdca+zQhaGywL3wFH0w uYd/PEA/3fOQqM2MS6bIa86rjqymYHyUTpZUK5ooOS4F5RcDZhFMCrnzqoZ5MLk5elou YWbVNxUsGGbnP0Yv9ZXGf8ej/fi3BFxP2z4RvKT4OyzLH6limrXmi/6/tvC2w4sLrCbk 2ynlIcCV2qxNc8O1DPqXpssykct14VR6cX6rSusQOFvs/fKBMk+xMHb6GV3ks1GmWZM2 LUq8Tyx2zCbJkhV5pwlx/xQsuksanlKs2xksfRwFQfHgu4q0MkynqjW5DzQR8PQ5nFNB wqCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=EIeQ+ZeIFSjDA/ZvT0WU2/cjgagvDpuBvKkOpG1NfeA=; b=auNq8OfIqKq3yOF5ORs/ccDoqpzjHKZzNr+VpsCpkD/DKa6y97OcoalBlVXuR1DOxl fkEYUJFkYNlKm3SwWt1D7t+jmd83p5I//DeNeHZhWvSdlvoag2+xF4auezkpK1rpG/n8 cfu7aob3U8uyGKTzG3qeh5dS65X1GsioSx5g5p2eebehFQ6LntUwKl/YjqKgNQhMA/75 I7B0SNmYkZH0Q9g/DligUdL5sR9ejVcMRHAvsRd70Ta4TrB1Naf5TQDOAW6cO/BKzrtr kZwLU/4K1ySBftz1VrGtvw/1N1keSARPfOQsmQjamB+u2NBTDvveKbqAg/6zFN5xFHnu VPTQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o8si4042296oti.47.2019.12.12.10.15.19; Thu, 12 Dec 2019 10:15:32 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730371AbfLLSOk (ORCPT + 99 others); Thu, 12 Dec 2019 13:14:40 -0500 Received: from isilmar-4.linta.de ([136.243.71.142]:56804 "EHLO isilmar-4.linta.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730346AbfLLSOh (ORCPT ); Thu, 12 Dec 2019 13:14:37 -0500 X-isilmar-external: YES X-isilmar-external: YES X-isilmar-external: YES X-isilmar-external: YES X-isilmar-external: YES X-isilmar-external: YES X-isilmar-external: YES Received: from light.dominikbrodowski.net (brodo.linta [10.1.0.102]) by isilmar-4.linta.de (Postfix) with ESMTPSA id 7C628200A95; Thu, 12 Dec 2019 18:14:34 +0000 (UTC) Received: by light.dominikbrodowski.net (Postfix, from userid 1000) id 4A81C20B74; Thu, 12 Dec 2019 19:14:31 +0100 (CET) From: Dominik Brodowski To: Alexander Viro , Linus Torvalds Cc: Greg Kroah-Hartman , "Rafael J . Wysocki" , Andrew Morton , Ingo Molnar , linux-kernel@vger.kernel.org Subject: [PATCH 5/5] fs: remove ksys_dup() Date: Thu, 12 Dec 2019 19:14:22 +0100 Message-Id: <20191212181422.31033-6-linux@dominikbrodowski.net> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191212181422.31033-1-linux@dominikbrodowski.net> References: <20191212181422.31033-1-linux@dominikbrodowski.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ksys_dup() is used only at one place in the kernel, namely to duplicate fd 0 of /dev/console to stdout and stderr. The same functionality can be achieved by using functions already available within the kernel namespace. Signed-off-by: Dominik Brodowski --- fs/file.c | 7 +------ include/linux/syscalls.h | 1 - init/main.c | 26 ++++++++++++++++++++------ 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/fs/file.c b/fs/file.c index 3da91a112bab..2f4fcf985079 100644 --- a/fs/file.c +++ b/fs/file.c @@ -960,7 +960,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); @@ -975,11 +975,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 5262b7a76d39..2960dedcfde8 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -1232,7 +1232,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 2cd736059416..ec3a1463ac69 100644 --- a/init/main.c +++ b/init/main.c @@ -93,6 +93,7 @@ #include #include #include +#include #include #include @@ -1157,13 +1158,26 @@ static int __ref kernel_init(void *unused) 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; + unsigned int i; + + /* Open /dev/console in kernelspace, this should never fail */ + file = filp_open("/dev/console", O_RDWR, 0); + if (!file) + goto err_out; + + /* create stdin/stdout/stderr, this should never fail */ + for (i = 0; i < 3; i++) { + if (f_dupfd(i, file, 0) != i) + goto err_out; + } + + return; - /* create stdout/stderr */ - (void) ksys_dup(0); - (void) ksys_dup(0); +err_out: + /* no panic -- this might not be fatal */ + pr_err("Warning: unable to open an initial console.\n"); + return; } static noinline void __init kernel_init_freeable(void) -- 2.24.1