Received: by 10.213.65.68 with SMTP id h4csp179466imn; Thu, 15 Mar 2018 13:23:29 -0700 (PDT) X-Google-Smtp-Source: AG47ELtJEPLNi8DhZgJEJf8V/jix1ltACVsHLYRpzfEzJMlgsxMwS2J6aLBBKjGL/Tat2yuETNmJ X-Received: by 10.98.181.18 with SMTP id y18mr7005578pfe.115.1521145409120; Thu, 15 Mar 2018 13:23:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521145409; cv=none; d=google.com; s=arc-20160816; b=ppfg++9osFy4ehWiGkrjnkP1rzRd/xx9lXxKdp22gFeXhxEpWUpAmRf0ZgQ1TylHTQ wA4Gfp/GwGHpMw84aUVQIRuc1G5aRvLGPuHgN+PW8HmxTbCMzDo45d26AOIMIqf7+hP1 1+sIVn3Yz7fKBKcOmjUdEQAqzVGhjI7qDfurkYShbPo9KqAAXQ+Q1TPp1SJLVBKwVZ+m 583goGmfPYs36PRelQzfORc636k3NHySleUZr43qDyCJR0ZoUIlu2+xjg3NBbJwu0USE djSsqUmxFKHgtj25kxHH9b2uCK/CyBb547vPXmfJKH+bRqdTeNxSwNBoQ+nrvkQL/OPc oEBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=41VSuN0tpH0gtceD10l4arBEfRuncUNWEQoL1R6Vnc4=; b=ptNQndA7bqtBz8HaFTdnLNr2c0ZnMcfv4y4CiLbGSAInoFmGcD5mA4aUS7y9NHMWZg rVRDRaVIaOHPkPLG1eUN0ug/Ur64BbvfyaPgXFGj3PkwuI4RDC5V/3O3bcufXYhapXKs m3FbqXhowT7/tMQMlW76NQ/kh81xPjwEI0JSZSBeYX2aP7OtD8XqpAXHj6hIFjDZw6KD mrgGTS4SJut7X/XXOMVCn/h9Qvy+9CmTFLePBmggwL6/0hjNdpuptVjdVkbL3ZQUOhfD 885uCklZKs8992MO255wKh3w7QQg4o24tFnzd1e+8pq2vyJR4ewWsjRUtWsA3lN3X28t RPqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=k9t05Qzo; 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 b61-v6si4581012plc.385.2018.03.15.13.23.14; Thu, 15 Mar 2018 13:23:29 -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; dkim=fail header.i=@gmail.com header.s=20161025 header.b=k9t05Qzo; 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 S1752792AbeCOUVm (ORCPT + 99 others); Thu, 15 Mar 2018 16:21:42 -0400 Received: from mail-qk0-f193.google.com ([209.85.220.193]:45505 "EHLO mail-qk0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752262AbeCOUVk (ORCPT ); Thu, 15 Mar 2018 16:21:40 -0400 Received: by mail-qk0-f193.google.com with SMTP id s9so8738935qke.12 for ; Thu, 15 Mar 2018 13:21:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=41VSuN0tpH0gtceD10l4arBEfRuncUNWEQoL1R6Vnc4=; b=k9t05QzoZxi0UG23Ppoj0iPl92qloABtV0P7ZF9v68waLUsYY0XQZLnzdirAJcjoYp 7jA/fHbC8G31ZYvRRdlqhEefK6w9Pb82Ob88Aafg11034JwsVqmll67wwcbzPF/s4fZb d1O7FWkA4bkt94aPRdSTsnIxoVU1t6sTsX0fqBxcgwzGHGZDePeFc1a0ZefPv5SyEM8u SMwqHAQcYb9NhuZtsKbP1v97kyYflaC7Q6SklMPOYGHWocnNG/MUTigBnFYRBBfS2s7v qhTyoO5m9uPZ3isu1vv9U7K1KMcw80B8n7T6WD7rRmuY8HP698GGpYnIQWpF0akm8YzM sW/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=41VSuN0tpH0gtceD10l4arBEfRuncUNWEQoL1R6Vnc4=; b=O9aNDX8k3IPBWEEmhvrg8RqqDQ0wMNvSrj4G73Q9q9iupySNEr4MKsdvyX8h6nYYzO NWFUneL98kxbfK5jelvvmcwCMETqc2L8tF1iRgimzsl7eQapzG9df01Y0khGB8gwDc2V KE4EdhH121d+q/DtCCrgLeWfFj+NKEgPfaZ5kvbZTIGSrtOZtM/Gy8U+OKXfCmzLy0Mo y8q8fnBUXfcojY9OIYjxR5n95XVC+kwl9RTTEze5bo3WynMcyUtMxR2Y+CT57a5AvCN/ 1Un5bZFzwQ9DXExXf0Ytu8+jJPC+8qPgZgjS+rUo0rBGuWfMmW4dwYq6DIOJe7JMe0Be L2Iw== X-Gm-Message-State: AElRT7FOp0tz30nJR33HKZzX1wEAR1XskNHMbTzacQ+KzYm7zuYuBzIW 30IX2ORmzsNvABqcmlqcwIRe7XHogVaXUg/yUDk= X-Received: by 10.55.9.146 with SMTP id 140mr13900943qkj.343.1521145300071; Thu, 15 Mar 2018 13:21:40 -0700 (PDT) MIME-Version: 1.0 Received: by 10.12.185.46 with HTTP; Thu, 15 Mar 2018 13:21:39 -0700 (PDT) In-Reply-To: <20180315190529.20943-25-linux@dominikbrodowski.net> References: <20180315190529.20943-1-linux@dominikbrodowski.net> <20180315190529.20943-25-linux@dominikbrodowski.net> From: Arnd Bergmann Date: Thu, 15 Mar 2018 21:21:39 +0100 X-Google-Sender-Auth: 1fiihXSHVl2SfgTHN9zO0ud--EI Message-ID: Subject: Re: [PATCH v2 24/36] fs: add ksys_unlink() wrapper; remove in-kernel calls to sys_unlink() To: Dominik Brodowski Cc: Linux Kernel Mailing List , Linus Torvalds , Al Viro , Andy Lutomirski , Ingo Molnar , Andrew Morton Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Mar 15, 2018 at 8:05 PM, Dominik Brodowski wrote: > Using this wrapper allows us to avoid the in-kernel calls to the > sys_unlink() syscall. > > Cc: Al Viro > Cc: Andrew Morton > Signed-off-by: Dominik Brodowski > --- > include/linux/syscalls.h | 11 +++++++++++ > init/do_mounts.h | 2 +- > init/do_mounts_initrd.c | 4 ++-- > init/do_mounts_rd.c | 2 +- > init/initramfs.c | 4 ++-- > 5 files changed, 17 insertions(+), 6 deletions(-) > > diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h > index 8f0f99702e7a..31aea3873de7 100644 > --- a/include/linux/syscalls.h > +++ b/include/linux/syscalls.h > @@ -971,4 +971,15 @@ int ksys_chdir(const char __user *filename); > int ksys_sync_file_range(int fd, loff_t offset, loff_t nbytes, > unsigned int flags); > > +/* > + * The following kernel syscall equivalents are just wrappers to fs-internal > + * functions. Therefore, provide stubs to be inlined at the callsites. > + */ > +extern long do_unlinkat(int dfd, struct filename *name); > + > +static inline long ksys_unlink(const char __user *pathname) > +{ > + return do_unlinkat(AT_FDCWD, getname(pathname)); > +} Why does this take a __user pointer? > static inline int create_dev(char *name, dev_t dev) > { > - sys_unlink(name); > + ksys_unlink(name); > return sys_mknod(name, S_IFBLK|0600, new_encode_dev(dev)); > } > > diff --git a/init/do_mounts_initrd.c b/init/do_mounts_initrd.c > index c19d9070134e..784576b633fd 100644 > --- a/init/do_mounts_initrd.c > +++ b/init/do_mounts_initrd.c > @@ -128,11 +128,11 @@ bool __init initrd_load(void) > * mounted in the normal path. > */ > if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0) { > - sys_unlink("/initrd.image"); > + ksys_unlink("/initrd.image"); > handle_initrd(); > return true; > } > } > - sys_unlink("/initrd.image"); > + ksys_unlink("/initrd.image"); > return false; In all callers we seem to have regular kernel strings, so I think you should skip the getname() and change the argument to a regular pointer. Arnd