ext4: missing unlock/put_page() in ext4_try_to_write_inline_data()
authorMaurizio Lombardi <mlombard@redhat.com>
Tue, 4 Dec 2018 05:06:53 +0000 (00:06 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 9 Jan 2019 15:16:43 +0000 (16:16 +0100)
commit 132d00becb31e88469334e1e62751c81345280e0 upstream.

In case of error, ext4_try_to_write_inline_data() should unlock
and release the page it holds.

Fixes: f19d5870cbf7 ("ext4: add normal write support for inline data")
Cc: stable@kernel.org # 3.8
Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ext4/inline.c

index d06cfe3726093e81a56946f69cd329f693b59a9e..1008384d5ed5d67beb8775cace0542bcd6450326 100644 (file)
@@ -702,8 +702,11 @@ int ext4_try_to_write_inline_data(struct address_space *mapping,
 
        if (!PageUptodate(page)) {
                ret = ext4_read_inline_page(inode, page);
-               if (ret < 0)
+               if (ret < 0) {
+                       unlock_page(page);
+                       put_page(page);
                        goto out_up_read;
+               }
        }
 
        ret = 1;