Received: by 10.213.65.68 with SMTP id h4csp146356imn; Thu, 15 Mar 2018 12:16:03 -0700 (PDT) X-Google-Smtp-Source: AG47ELtc3uX2vO6fAb220A+XE76/e0FirTuOmEQgrQ8CR7+crVNJvol0lm7n2dPI0bhKPyIl/CLC X-Received: by 2002:a17:902:122:: with SMTP id 31-v6mr9503742plb.280.1521141363680; Thu, 15 Mar 2018 12:16:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521141363; cv=none; d=google.com; s=arc-20160816; b=q916U0avCnPPmcNqBqntk0wSNLJcPIxiXew8P76ToifA9wiLJqegcRy4akwyUSt4Fv zmLqshHJipbTD2GH1UAjtP4dwy5DldZY+mK3ZYcDGQUfd45kSTCohwkYSHMiurzz1kTL fqZaH0aKyD/5CpRI1t9a1felwY46vQwIKWx6U97FW77cRwMADKwfYBUVwLAVWca2PyXV AzQEndp3qZ8O8Eb8tAstqp39rTft9YRhrPuZ3vriVDqt03atFaufhzIon8/cloQ7aLIg jxvW3KqqMSS3GZdgPZUWdSmMH8/R+HitNnv4yfY9NKd7maXo0KTkd+lVRNFYhCMh79NT xJhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=qqrVLDboge+IMm04Vel0g+WZ8mC8GZAAUMeQOi1oMfY=; b=DV4MhQvsFIASw6lvaknM1u7CoiO+I3AXy0vujIHvtO9Wo2TQjnv69NSwcR3jLHFkLS Tnt3lQ5oFQEHdVoZfZeV/kyA8O/qmBAdNSwA+kUybwj67tjjcotUnytcfAZkHZNpdNEg aOEwcE9ZZ42iP+NZgjkaZzB8WXTRh2AhpYsqUg0IYSe27v2Q2gRDMaRfZ2V8mBCxzZNF h6WlzTzmRA6r/YNtpkZs4WAd36S/DSHP72kCSddnQrvBqgvWy3w7aN76udvqyoDGY7Ou 8kRH9J75DsXzJXN+Pp8LV2pakMcZGW4oQLTX/nOimFjK4ofJBBH6C34h/+NPlHrimd7F 7wbA== 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 r79si4212776pfb.126.2018.03.15.12.15.49; Thu, 15 Mar 2018 12:16:03 -0700 (PDT) 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 S1752663AbeCOTM4 (ORCPT + 99 others); Thu, 15 Mar 2018 15:12:56 -0400 Received: from isilmar-4.linta.de ([136.243.71.142]:36086 "EHLO isilmar-4.linta.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932574AbeCOTGU (ORCPT ); Thu, 15 Mar 2018 15:06:20 -0400 Received: from light.dominikbrodowski.net (isilmar.linta [10.0.0.1]) by isilmar-4.linta.de (Postfix) with ESMTPS id 5F1FC200915; Thu, 15 Mar 2018 19:06:18 +0000 (UTC) Received: by light.dominikbrodowski.net (Postfix, from userid 1000) id A6382206C9; Thu, 15 Mar 2018 20:05:39 +0100 (CET) From: Dominik Brodowski To: linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, viro@zeniv.linux.org.uk Cc: luto@kernel.org, mingo@kernel.org, akpm@linux-foundation.org, arnd@arndb.de Subject: [PATCH v2 26/36] fs: add ksys_rmdir() wrapper; remove in-kernel calls to sys_rmdir() Date: Thu, 15 Mar 2018 20:05:19 +0100 Message-Id: <20180315190529.20943-27-linux@dominikbrodowski.net> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180315190529.20943-1-linux@dominikbrodowski.net> References: <20180315190529.20943-1-linux@dominikbrodowski.net> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Using this wrapper allows us to avoid the in-kernel calls to the sys_rmdir() syscall. Cc: Al Viro Cc: Andrew Morton Signed-off-by: Dominik Brodowski --- fs/internal.h | 1 + fs/namei.c | 2 +- include/linux/syscalls.h | 7 +++++++ init/initramfs.c | 4 ++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/fs/internal.h b/fs/internal.h index df262f41a0ef..0eda35fa1743 100644 --- a/fs/internal.h +++ b/fs/internal.h @@ -55,6 +55,7 @@ extern void __init chrdev_init(void); extern int user_path_mountpoint_at(int, const char __user *, unsigned int, struct path *); extern int vfs_path_lookup(struct dentry *, struct vfsmount *, const char *, unsigned int, struct path *); +long do_rmdir(int dfd, const char __user *pathname); long do_unlinkat(int dfd, struct filename *name); /* diff --git a/fs/namei.c b/fs/namei.c index 524e829ffc7d..8545151f74e9 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -3872,7 +3872,7 @@ int vfs_rmdir(struct inode *dir, struct dentry *dentry) } EXPORT_SYMBOL(vfs_rmdir); -static long do_rmdir(int dfd, const char __user *pathname) +long do_rmdir(int dfd, const char __user *pathname) { int error = 0; struct filename *name; diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 31aea3873de7..48fa98840b4e 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -982,4 +982,11 @@ static inline long ksys_unlink(const char __user *pathname) return do_unlinkat(AT_FDCWD, getname(pathname)); } +extern long do_rmdir(int dfd, const char __user *pathname); + +static inline long ksys_rmdir(const char __user *pathname) +{ + return do_rmdir(AT_FDCWD, pathname); +} + #endif diff --git a/init/initramfs.c b/init/initramfs.c index 08eb551168a8..73bbb227f868 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -317,7 +317,7 @@ static void __init clean_path(char *path, umode_t fmode) if (!vfs_lstat(path, &st) && (st.mode ^ fmode) & S_IFMT) { if (S_ISDIR(st.mode)) - sys_rmdir(path); + ksys_rmdir(path); else ksys_unlink(path); } @@ -589,7 +589,7 @@ static void __init clean_rootfs(void) WARN_ON_ONCE(ret); if (!ret) { if (S_ISDIR(st.mode)) - sys_rmdir(dirp->d_name); + ksys_rmdir(dirp->d_name); else ksys_unlink(dirp->d_name); } -- 2.16.2