From: Theodore Ts'o <tytso@mit.edu>
To: Andreas Dilger <adilger@dilger.ca>
Cc: Ext4 Developers List <linux-ext4@vger.kernel.org>,
jaegeuk@kernel.org, mhalcrow@google.com,
Ildar Muslukhov <ildarm@google.com>
Subject: Re: [PATCH 13/22] ext4 crypto: implement the ext4 decryption read path
Date: Sat, 11 Apr 2015 09:38:39 -0400 [thread overview]
Message-ID: <20150411133839.GH6540@thunk.org> (raw)
In-Reply-To: <FEE31C23-6965-4762-A9A6-D19EF014A719@dilger.ca>
On Wed, Apr 08, 2015 at 12:51:04PM -0600, Andreas Dilger wrote:
> > @@ -200,9 +201,15 @@ static const struct vm_operations_struct ext4_file_vm_ops = {
> >
> > static int ext4_file_mmap(struct file *file, struct vm_area_struct *vma)
> > {
> > + int res = 0;
>
> This function is using "res", the one below "ret". It would be nice to
> have some consistency. "rc" is probably the most common and would be
> my preference for new/modified code.
Good point; I've restructured this code to make it simpler (and to
avoid conflicting with the DAX patches). So it now looks like this:
if (ext4_encrypted_inode(inode)) {
int err = ext4_generate_encryption_key(inode);
if (err)
return 0;
}
(I'm not a fan of rc, myself, but this makes the declaration and use
of the function much closer together than what we had before, which
makes it much easier to understand. I'm guessing Microsoft had a
coding policy which stated that all functions have to only have one
return function at the end of the function, since I've noticed that
both Ildar and Michael seem to code that way, even when it requires
using goto statements and/or making the code less clear.)
> > +#ifdef CONFIG_EXT4_FS_ENCRYPTION
> > + if (S_ISREG(inode->i_mode) &&
> > + ext4_encrypted_inode(inode)) {
> > + /* We expect the key to be set. */
> > + BUG_ON(!ext4_has_encryption_key(inode));
> > + BUG_ON(blocksize != PAGE_CACHE_SIZE);
> > + WARN_ON_ONCE(ext4_decrypt_one(inode, page));
> > + }
> > +#endif
>
> This could avoid the #ifdef since ext4_encrypted_inode() is declared (0)
> in the !CONFIG_EXT4_FS_ENCRYPTION case. The compiler will optimize out
> the resulting unreachable code in that case and make this code easier
> to read.
Good point, done.
> If the (bio->bi_private != NULL) check was moved to a helper function:
>
> static inline bool ext4_bio_encrypted(struct bio *bio)
> {
> #ifdef CONFIG_EXT4_FS_ENCRYPTION
> return unlikely(bio->bi_private != NULL);
> #else
> return false;
> #endif
> }
>
> Then the inline #ifdefs could be removed here, since the resulting
Sure, that makes the code a bit more readable, thanks.
> > + if (err)
> > + ext4_release_crypto_ctx(ctx);
> > + else {
>
> The if/else should have matching {} blocks.
Meh, I don't really think it's that important, but sure.
> > @@ -94,9 +137,15 @@ int ext4_mpage_readpages(struct address_space *mapping,
> > unsigned page_block;
> > struct block_device *bdev = inode->i_sb->s_bdev;
> > int length;
> > + int do_decryption = 0;
>
> Can be bool instead of int.
Actually, since we only use do_decryption in one place now, I'll just remove this and this:
> > +#ifdef CONFIG_EXT4_FS_ENCRYPTION
> > + if (ext4_encrypted_inode(inode) && S_ISREG(inode->i_mode))
> > + do_decryption = 1;
> > +#endif
> #ifdef can be removed.
And move the condition to the one place where we test for do_decryption.
Thanks,
- Ted
next prev parent reply other threads:[~2015-04-11 13:38 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-02 22:10 [PATCH 00/22] ext4 encryption patches Theodore Ts'o
2015-04-02 22:10 ` [PATCH 01/22] ext4: add ext4_mpage_readpages() Theodore Ts'o
2015-04-06 21:08 ` Andreas Dilger
2015-04-08 3:04 ` Theodore Ts'o
2015-04-02 22:10 ` [PATCH 02/22] ext4: reserve codepoints used by the ext4 encryption feature Theodore Ts'o
2015-04-02 22:10 ` [PATCH 03/22] ext4 crypto: add ext4 encryption Kconfig Theodore Ts'o
2015-04-02 22:10 ` [PATCH 04/22] ext4 crypto: export ext4_empty_dir() Theodore Ts'o
2015-04-02 22:10 ` [PATCH 05/22] ext4 crypto: add encryption xattr support Theodore Ts'o
2015-04-02 22:10 ` [PATCH 06/22] ext4 crypto: add encryption policy checking Theodore Ts'o
2015-04-06 21:31 ` Andreas Dilger
2015-04-11 13:06 ` Theodore Ts'o
2015-04-11 13:18 ` Theodore Ts'o
2015-04-08 18:07 ` Andreas Dilger
2015-04-11 13:10 ` Theodore Ts'o
2015-04-02 22:10 ` [PATCH 07/22] ext4 crypto: add ioctl to set encryption policy Theodore Ts'o
2015-04-02 22:10 ` [PATCH 08/22] ext4 crypto: add ext4 encryption facilities Theodore Ts'o
2015-04-09 12:54 ` Maurizio Lombardi
2015-04-11 12:50 ` Theodore Ts'o
2015-04-02 22:10 ` [PATCH 09/22] ext4 crypto: add encryption key management facilities Theodore Ts'o
2015-04-02 22:10 ` [PATCH 10/22] ext4 crypto: validate context consistency on lookup Theodore Ts'o
2015-04-02 22:10 ` [PATCH 11/22] ext4 crypto: inherit encryption policies on inode and directory create Theodore Ts'o
2015-04-02 22:10 ` [PATCH 12/22] ext4 crypto: implement the ext4 encryption write path Theodore Ts'o
2015-04-09 21:44 ` Andreas Dilger
2015-04-11 13:17 ` Theodore Ts'o
2015-04-02 22:10 ` [PATCH 13/22] ext4 crypto: implement the ext4 decryption read path Theodore Ts'o
2015-04-08 18:51 ` Andreas Dilger
2015-04-11 13:38 ` Theodore Ts'o [this message]
2015-04-02 22:10 ` [PATCH 14/22] ext4 crypto: filename encryption facilities Theodore Ts'o
2015-04-02 22:10 ` [PATCH 15/22] ext4: teach ext4_htree_store_dirent() to store decrypted filenames Theodore Ts'o
2015-04-02 22:10 ` [PATCH 16/22] ext4 crypto: insert encrypted filenames into a leaf directory block Theodore Ts'o
2015-04-02 22:10 ` [PATCH 17/22] ext4 crypto: partial update to namei.c for fname crypto Theodore Ts'o
2015-04-08 17:44 ` Andreas Dilger
2015-04-12 5:06 ` Theodore Ts'o
2015-04-02 22:10 ` [PATCH 18/22] ext4 crypto: filename encryption modifications Theodore Ts'o
2015-04-02 22:10 ` [PATCH 19/22] ext4 crypto: enable filename encryption Theodore Ts'o
2015-04-08 18:38 ` Andreas Dilger
2015-04-02 22:10 ` [PATCH 20/22] ext4 crypto: Add symlink encryption Theodore Ts'o
2015-04-08 17:58 ` Andreas Dilger
2015-04-12 5:29 ` Theodore Ts'o
2015-04-02 22:10 ` [PATCH 21/22] ext4 crypto: enable encryption feature flag Theodore Ts'o
2015-04-02 22:10 ` [PATCH 22/22] ext4 crypto: add password salt support Theodore Ts'o
2015-04-03 1:57 ` [PATCH 00/22] ext4 encryption patches Theodore Ts'o
2015-04-06 20:28 ` Jonathan Corbet
2015-04-08 3:07 ` Theodore Ts'o
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150411133839.GH6540@thunk.org \
--to=tytso@mit.edu \
--cc=adilger@dilger.ca \
--cc=ildarm@google.com \
--cc=jaegeuk@kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=mhalcrow@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).