linux/fs/f2fs
Chao Yu 470f00e968 f2fs: fix to release inode page correctly
In following call path, we will pass a locked and referenced ipage
pointer to get_new_data_page:
 - init_inode_metadata
  - make_empty_dir
   - get_new_data_page

There are two exit paths in get_new_data_page when error occurs:
1) grab_cache_page fails, ipage will not be released;
2) f2fs_reserve_block fails, ipage will be released in callee.

So, it's not consistent for error handling in get_new_data_page.

For f2fs_reserve_block, it's not very easy to change the rule
of error handling, since it's already complicated.

Here we deside to choose an easy way to fix this issue:
If any error occur in get_new_data_page, we will ensure releasing
ipage in this function.

The same issue is in f2fs_convert_inline_dir, fix that too.

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2015-08-05 08:08:23 -07:00
..
acl.c f2fs: make posix_acl_create() safer and cleaner 2015-05-07 11:38:31 -07:00
acl.h f2fs: avoid deadlock on init_inode_metadata 2014-11-03 16:07:33 -08:00
checkpoint.c f2fs: freeze filesystem when fail to update meta page due to IO error 2015-08-05 08:08:17 -07:00
crypto_fname.c f2fs crypto: clean up error handling in f2fs_fname_setup_filename 2015-06-01 16:21:08 -07:00
crypto_key.c f2fs crypto: delete an unnecessary check before the function call "key_put" 2015-08-04 14:09:52 -07:00
crypto_policy.c f2fs crypto: do not set encryption policy for non-directory by ioctl 2015-06-01 16:21:07 -07:00
crypto.c f2fs crypto: add alloc_bounce_page 2015-06-11 15:04:20 -07:00
data.c f2fs: fix to release inode page correctly 2015-08-05 08:08:23 -07:00
debug.c f2fs: use atomic_t to record hit ratio info of extent cache 2015-08-05 08:08:06 -07:00
dir.c f2fs crypto: use per-inode tfm structure 2015-06-01 16:21:04 -07:00
extent_cache.c f2fs: add new interfaces for extent tree 2015-08-05 08:08:08 -07:00
f2fs_crypto.h f2fs crypto: remove alloc_page for bounce_page 2015-06-01 16:21:10 -07:00
f2fs.h f2fs: handle error cases in commit_inmem_pages 2015-08-05 08:08:15 -07:00
file.c f2fs: handle error cases in commit_inmem_pages 2015-08-05 08:08:15 -07:00
gc.c f2fs: use a page temporarily for encrypted gced page 2015-08-05 08:08:04 -07:00
gc.h f2fs: add new ioctl F2FS_IOC_GARBAGE_COLLECT 2015-08-04 14:09:58 -07:00
hash.c f2fs: introduce dot and dotdot name check 2015-05-28 15:41:34 -07:00
inline.c f2fs: fix to release inode page correctly 2015-08-05 08:08:23 -07:00
inode.c f2fs: fix inline data/dentry stat number leak 2015-08-05 08:08:14 -07:00
Kconfig f2fs crypto: add f2fs encryption Kconfig 2015-05-28 15:41:46 -07:00
Makefile f2fs: maintain extent cache in separated file 2015-08-04 14:09:58 -07:00
namei.c f2fs: stat inline xattr inode number 2015-08-05 08:08:05 -07:00
node.c f2fs: fix to build free nids from readaheaded nat pages 2015-08-05 08:08:14 -07:00
node.h f2fs: move existing definitions into f2fs.h 2015-05-28 15:41:27 -07:00
recovery.c f2fs: hide common code in f2fs_replace_block 2015-06-02 09:52:07 -07:00
segment.c f2fs: handle error cases in commit_inmem_pages 2015-08-05 08:08:15 -07:00
segment.h f2fs: unify f2fs_bug_on when check blocks and segment 2015-08-05 08:08:18 -07:00
shrinker.c f2fs: use extent_cache by default 2015-08-04 14:09:56 -07:00
super.c f2fs: fix double lock in handle_failed_inode 2015-08-05 08:08:09 -07:00
trace.c f2fs: add sbi and page pointer in f2fs_io_info 2015-05-28 15:41:32 -07:00
trace.h f2fs: add sbi and page pointer in f2fs_io_info 2015-05-28 15:41:32 -07:00
xattr.c f2fs: correct return value of ->setxattr 2015-08-04 14:09:59 -07:00
xattr.h f2fs crypto: add encryption xattr support 2015-05-28 15:41:47 -07:00