From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FSL_HELO_FAKE,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 62F2EC2D0C2 for ; Fri, 3 Jan 2020 16:59:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3741D21734 for ; Fri, 3 Jan 2020 16:59:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578070748; bh=p72TZiAw/07LPkWfOYtzCa9bg2/ZkXAP1lj3Ql8HWCU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=CA0xe7RqNdz3vGyP0Q3pnK6E+qmvQKlUYqX7f523aNLhGuQjpZkSas44/NXSviJku uwwPuma84SPJDj07BhU+ATijfPQVdasYgWCQ64xODjoWuCEgaDE6SM5+maWDj2qwFb aTttq8O50e32/Xhw95/foVtOzGkMs3Y8sezBp1zk= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728035AbgACQ7H (ORCPT ); Fri, 3 Jan 2020 11:59:07 -0500 Received: from mail.kernel.org ([198.145.29.99]:54298 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727994AbgACQ7H (ORCPT ); Fri, 3 Jan 2020 11:59:07 -0500 Received: from gmail.com (unknown [104.132.1.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D900A206DB; Fri, 3 Jan 2020 16:59:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578070747; bh=p72TZiAw/07LPkWfOYtzCa9bg2/ZkXAP1lj3Ql8HWCU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=TAiCI/0HUAM2UwsWoQBgKTgxK40H4qoBIM733qN53Eqka1K9WI2tyqOEGXGoMrNmA eTL6rRcTRo/DjytRRFsds40kh/fRQvFxCHEfT+X6HWXGplKTEIfJkdrrPz4NTa7P3s KjET9/U6YAjG2SLcFN/KpVEDjiU7cb5FS2Isdux4= Date: Fri, 3 Jan 2020 08:59:05 -0800 From: Eric Biggers To: linux-fscrypt@vger.kernel.org Cc: Daniel Rosenberg Subject: Re: [PATCH v2] fscrypt: constify inode parameter to filename encryption functions Message-ID: <20200103165905.GF19521@gmail.com> References: <20191215213947.9521-1-ebiggers@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20191215213947.9521-1-ebiggers@kernel.org> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-fscrypt-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fscrypt@vger.kernel.org On Sun, Dec 15, 2019 at 01:39:47PM -0800, Eric Biggers wrote: > From: Eric Biggers > > Constify the struct inode parameter to fscrypt_fname_disk_to_usr() and > the other filename encryption functions so that users don't have to pass > in a non-const inode when they are dealing with a const one, as in [1]. > > [1] https://lkml.kernel.org/linux-ext4/20191203051049.44573-6-drosen@google.com/ > > Cc: Daniel Rosenberg > Signed-off-by: Eric Biggers > --- > > v2: also update the !CONFIG_FS_ENCRYPTION version of > fscrypt_fname_disk_to_usr(). > > fs/crypto/fname.c | 20 ++++++++++---------- > fs/crypto/fscrypt_private.h | 2 +- > include/linux/fscrypt.h | 8 +++++--- > 3 files changed, 16 insertions(+), 14 deletions(-) > > diff --git a/fs/crypto/fname.c b/fs/crypto/fname.c > index 3da3707c10e3..c87b71aa2353 100644 > --- a/fs/crypto/fname.c > +++ b/fs/crypto/fname.c > @@ -34,12 +34,12 @@ static inline bool fscrypt_is_dot_dotdot(const struct qstr *str) > * > * Return: 0 on success, -errno on failure > */ > -int fname_encrypt(struct inode *inode, const struct qstr *iname, > +int fname_encrypt(const struct inode *inode, const struct qstr *iname, > u8 *out, unsigned int olen) > { > struct skcipher_request *req = NULL; > DECLARE_CRYPTO_WAIT(wait); > - struct fscrypt_info *ci = inode->i_crypt_info; > + const struct fscrypt_info *ci = inode->i_crypt_info; > struct crypto_skcipher *tfm = ci->ci_ctfm; > union fscrypt_iv iv; > struct scatterlist sg; > @@ -85,14 +85,14 @@ int fname_encrypt(struct inode *inode, const struct qstr *iname, > * > * Return: 0 on success, -errno on failure > */ > -static int fname_decrypt(struct inode *inode, > - const struct fscrypt_str *iname, > - struct fscrypt_str *oname) > +static int fname_decrypt(const struct inode *inode, > + const struct fscrypt_str *iname, > + struct fscrypt_str *oname) > { > struct skcipher_request *req = NULL; > DECLARE_CRYPTO_WAIT(wait); > struct scatterlist src_sg, dst_sg; > - struct fscrypt_info *ci = inode->i_crypt_info; > + const struct fscrypt_info *ci = inode->i_crypt_info; > struct crypto_skcipher *tfm = ci->ci_ctfm; > union fscrypt_iv iv; > int res; > @@ -247,10 +247,10 @@ EXPORT_SYMBOL(fscrypt_fname_free_buffer); > * > * Return: 0 on success, -errno on failure > */ > -int fscrypt_fname_disk_to_usr(struct inode *inode, > - u32 hash, u32 minor_hash, > - const struct fscrypt_str *iname, > - struct fscrypt_str *oname) > +int fscrypt_fname_disk_to_usr(const struct inode *inode, > + u32 hash, u32 minor_hash, > + const struct fscrypt_str *iname, > + struct fscrypt_str *oname) > { > const struct qstr qname = FSTR_TO_QSTR(iname); > struct fscrypt_digested_name digested_name; > diff --git a/fs/crypto/fscrypt_private.h b/fs/crypto/fscrypt_private.h > index 23cef4d3793a..5792ecbd4d24 100644 > --- a/fs/crypto/fscrypt_private.h > +++ b/fs/crypto/fscrypt_private.h > @@ -260,7 +260,7 @@ void fscrypt_generate_iv(union fscrypt_iv *iv, u64 lblk_num, > const struct fscrypt_info *ci); > > /* fname.c */ > -extern int fname_encrypt(struct inode *inode, const struct qstr *iname, > +extern int fname_encrypt(const struct inode *inode, const struct qstr *iname, > u8 *out, unsigned int olen); > extern bool fscrypt_fname_encrypted_size(const struct inode *inode, > u32 orig_len, u32 max_len, > diff --git a/include/linux/fscrypt.h b/include/linux/fscrypt.h > index 1a7bffe78ed5..6eaa729544a3 100644 > --- a/include/linux/fscrypt.h > +++ b/include/linux/fscrypt.h > @@ -153,8 +153,10 @@ static inline void fscrypt_free_filename(struct fscrypt_name *fname) > extern int fscrypt_fname_alloc_buffer(const struct inode *, u32, > struct fscrypt_str *); > extern void fscrypt_fname_free_buffer(struct fscrypt_str *); > -extern int fscrypt_fname_disk_to_usr(struct inode *, u32, u32, > - const struct fscrypt_str *, struct fscrypt_str *); > +extern int fscrypt_fname_disk_to_usr(const struct inode *inode, > + u32 hash, u32 minor_hash, > + const struct fscrypt_str *iname, > + struct fscrypt_str *oname); > > #define FSCRYPT_FNAME_MAX_UNDIGESTED_SIZE 32 > > @@ -438,7 +440,7 @@ static inline void fscrypt_fname_free_buffer(struct fscrypt_str *crypto_str) > return; > } > > -static inline int fscrypt_fname_disk_to_usr(struct inode *inode, > +static inline int fscrypt_fname_disk_to_usr(const struct inode *inode, > u32 hash, u32 minor_hash, > const struct fscrypt_str *iname, > struct fscrypt_str *oname) > -- > 2.24.1 > Applied to fscrypt.git#master for 5.6. - Eric