f2fs: fix encrypted page memory leak
authorChao Yu <yuchao0@huawei.com>
Thu, 21 Feb 2019 12:37:14 +0000 (20:37 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 13 Mar 2019 01:59:18 +0000 (18:59 -0700)
For IPU path of f2fs_do_write_data_page(), in its error path, we
need to release encrypted page and fscrypt context, otherwise it
will cause memory leak.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/data.c

index 65c9586b2952f90ab47b6f31745da7472b3f3588..3f3becd46362d5a0ce85d6e090b2906035dd687b 100644 (file)
@@ -1861,8 +1861,13 @@ got_it:
                if (fio->need_lock == LOCK_REQ)
                        f2fs_unlock_op(fio->sbi);
                err = f2fs_inplace_write_data(fio);
-               if (err && PageWriteback(page))
-                       end_page_writeback(page);
+               if (err) {
+                       if (f2fs_encrypted_file(inode))
+                               fscrypt_pullback_bio_page(&fio->encrypted_page,
+                                                                       true);
+                       if (PageWriteback(page))
+                               end_page_writeback(page);
+               }
                trace_f2fs_do_write_data_page(fio->page, IPU);
                set_inode_flag(inode, FI_UPDATE_WRITE);
                return err;