]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ext4: clear BH_Uptodate flag on decryption error
authorChandan Rajendra <chandan@linux.ibm.com>
Mon, 20 May 2019 16:29:49 +0000 (09:29 -0700)
committerEric Biggers <ebiggers@google.com>
Tue, 28 May 2019 17:27:53 +0000 (10:27 -0700)
If decryption fails, ext4_block_write_begin() can return with the page's
buffer_head marked with the BH_Uptodate flag.  This commit clears the
BH_Uptodate flag in such cases.

Signed-off-by: Chandan Rajendra <chandan@linux.ibm.com>
Signed-off-by: Eric Biggers <ebiggers@google.com>
fs/ext4/inode.c

index 8bfd8941f5fff26735e5a1cbefc012e04ed36240..92776d0ff9b96f1a588f5a4e2e2894b7b45b6716 100644 (file)
@@ -1229,10 +1229,14 @@ static int ext4_block_write_begin(struct page *page, loff_t pos, unsigned len,
                if (!buffer_uptodate(*wait_bh))
                        err = -EIO;
        }
-       if (unlikely(err))
+       if (unlikely(err)) {
                page_zero_new_buffers(page, from, to);
-       else if (decrypt)
+       } else if (decrypt) {
                err = fscrypt_decrypt_pagecache_blocks(page, PAGE_SIZE, 0);
+               if (err)
+                       clear_buffer_uptodate(*wait_bh);
+       }
+
        return err;
 }
 #endif