Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp922415imm; Wed, 18 Jul 2018 13:07:01 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcKqTHEw5UHiVVe2VHNawh8UBCpd3qQ6yEy9MY/FR9NZUIH5Ejrg3XCdmteo9GSHLK02xuF X-Received: by 2002:a63:551e:: with SMTP id j30-v6mr6863251pgb.92.1531944421809; Wed, 18 Jul 2018 13:07:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531944421; cv=none; d=google.com; s=arc-20160816; b=LPxsNGnVOF+KFqJRvR1dLFo8Cdl2/bevw/znyewMrg5X7bZIeIopK/U7RuqiexfJcQ amhuDMjRgafJs5VzOmSqfkEJ1yCzpkorm/+GhhPeWKGFnSLYVSLUJqWuQjYD5amE0UFa vvg/OBt0aQsxmNaDePec5ynZcm/fWuxl874XJC60Q38b8R7wafyou1icelX+k2ftcp7q q2rgRdm+G04BPlG3Pc4oTEtQz4AIlld2Nj4OsrU5xskcj2odWy4tYWqiEBBJKw3mnsqm A5f9wOyJf+Uz+afws5505UGMcSomWArKY39N3In1DI+D9GoV99NuHv5p23sW9htHlDGN mkkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=xmXE7u5Lttb90NahZOKaEMgp46XwcQHKxuO+9+/51Is=; b=wR+UoXfGwS8pi3M+S8GkahWdAT81JrELjtqOxySDMbOeliS2v0bpAJt/p9nlD57PCF qoML2tQCmjMeIwAQBcweevHEnD/JPFlOGXmMIN1W3G6U5re6vvz5SYKjP4JoTP3mlzPF pTbpreJVrjQxQ1VtWiZxT3HT+4OGiGMxF0hp7Jvn3fM4+5xwLUaZR8rS6AiTnEjOJStK UrgPH8thKx+X81pR8w1eN5RJkqxExzrk16ZOaNhHx1RVQwj9GMGT8KNyCFyuAtCc4ZhN p2lUxNEBSGFb+U6cDHnetP2Ur8VJ+e2A9LE9i7mpLX0sndz2C0EXdMQpVtcCto650Hdj 0lMg== 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 r25-v6si3806001pge.104.2018.07.18.13.06.47; Wed, 18 Jul 2018 13:07:01 -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 S1730534AbeGRUnn (ORCPT + 99 others); Wed, 18 Jul 2018 16:43:43 -0400 Received: from zeniv.linux.org.uk ([195.92.253.2]:39708 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726909AbeGRUnn (ORCPT ); Wed, 18 Jul 2018 16:43:43 -0400 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.87 #1 (Red Hat Linux)) id 1ffsgF-0004Ga-O3; Wed, 18 Jul 2018 20:04:11 +0000 Date: Wed, 18 Jul 2018 21:04:11 +0100 From: Al Viro To: Linus Torvalds Cc: Miklos Szeredi , Stephen Rothwell , linux-fsdevel , Linux Kernel Mailing List Subject: Re: [RFC] call_with_creds() Message-ID: <20180718200411.GW30522@ZenIV.linux.org.uk> References: <20180718025636.GA26175@ZenIV.linux.org.uk> <20180718132955.2bf185b7@canb.auug.org.au> <20180718124340.GS30522@ZenIV.linux.org.uk> <20180718181252.GU30522@ZenIV.linux.org.uk> <20180718194637.GV30522@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.1 (2017-09-22) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jul 18, 2018 at 12:53:48PM -0700, Linus Torvalds wrote: > On Wed, Jul 18, 2018 at 12:46 PM Al Viro wrote: > > > > Huh? Nevermind ->write(), what about open()? > > What about open? > > At open time, file->f_cred is the same as current_cred(). int cachefiles_write_page(struct fscache_storage *op, struct page *page) { ... file = dentry_open(&path, O_RDWR | O_LARGEFILE, cache->cache_cred); int ecryptfs_privileged_open(struct file **lower_file, struct dentry *lower_dentry, struct vfsmount *lower_mnt, const struct cred *cred) ... (*lower_file) = dentry_open(&req.path, flags, cred); /* Derived from fs/exec.c:flush_old_files. */ static inline void flush_unauthorized_files(const struct cred *cred, struct files_struct *files) ... devnull = dentry_open(&selinux_null, O_RDWR, cred); (granted, here we don't care much, /dev/null being what it is) In mainline: struct file *filp_clone_open(struct file *oldfile) { ... retval = vfs_open(&oldfile->f_path, file, oldfile->f_cred);