f2fs: fix to unlock page correctly in error path of is_alive()
Chao Yu
maintainerPATCH 1/1 f2fs: fix to unlock page correctly in error path of is_alive()
As Pavel Machek reported in below link [1]:
After commit 77900c45ee5c ("f2fs: fix to do sanity check in is_alive()"), node page should be unlock via calling f2fs_put_page() in the error path of is_alive(), otherwise, f2fs may hang when it tries to lock the node page, fix it.
[1] https://lore.kernel.org/stable/[email protected]/
--- fs/f2fs/gc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/f2fs/gc.c +3 -1
@@ -1038,8 +1038,10 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,set_sbi_flag (sbi,SBI_NEED_FSCK ); } -if (f2fs_check_nid_range (sbi, dni->ino)) +if (f2fs_check_nid_range (sbi, dni->ino)) { +f2fs_put_page (node_page,1 );return false; + } *nofs =ofs_of_node (node_page); source_blkaddr =data_blkaddr (NULL , node_page, ofs_in_node);
Signature · 8 lines
2.32.0 _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
Jaegeuk Kim
maintainerQuoted 8 lines · Chao Yu
As Pavel Machek reported in below link [1]:
After commit
77900c45ee5c("f2fs: fix to do sanity check inis_alive()"), node page should be unlock via callingf2fs_put_page()in the error path ofis_alive(), otherwise, f2fs may hang when it tries to lock the node page, fix it.
Need -stable? It seems 4.19+?
Quoted 27 lines
Fixes 77900c45ee5c ("f2fs: fix to do sanity check in is_alive()")Reported-by Pavel Machek <[email protected]>Signed-off-by Pavel Machek <[email protected]>Signed-off-by Chao Yu <[email protected]>--- fs/f2fs/gc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)fs/f2fs/gc.c +3
-1@@ -1038,8 +1038,10 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,set_sbi_flag (sbi,SBI_NEED_FSCK ); } -if (f2fs_check_nid_range (sbi, dni->ino)) +if (f2fs_check_nid_range (sbi, dni->ino)) { +f2fs_put_page (node_page,1 );return false; + } *nofs =ofs_of_node (node_page); source_blkaddr =data_blkaddr (NULL , node_page, ofs_in_node);Signature · 1 line
2.32.0
Chao Yu
maintainerQuoted 11 lines · Jaegeuk Kim
Quoted 8 lines · Chao Yu
As Pavel Machek reported in below link [1]:
After commit
77900c45ee5c("f2fs: fix to do sanity check inis_alive()"), node page should be unlock via callingf2fs_put_page()in the error path ofis_alive(), otherwise, f2fs may hang when it tries to lock the node page, fix it.Need -stable? It seems 4.19+?
It depends on where commit 77900c45ee5c ("f2fs: fix to do sanity check in is_alive()") be backported to? Anyway, let me Cc stable-kernel mailing list.
Thanks,
Quoted 28 lines
Quoted 28 lines
Fixes 77900c45ee5c ("f2fs: fix to do sanity check in is_alive()")Reported-by Pavel Machek <[email protected]>Signed-off-by Pavel Machek <[email protected]>Signed-off-by Chao Yu <[email protected]>--- fs/f2fs/gc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)fs/f2fs/gc.c +3
-1@@ -1038,8 +1038,10 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,set_sbi_flag (sbi,SBI_NEED_FSCK ); } -if (f2fs_check_nid_range (sbi, dni->ino)) +if (f2fs_check_nid_range (sbi, dni->ino)) { +f2fs_put_page (node_page,1 );return false; + } *nofs =ofs_of_node (node_page); source_blkaddr =data_blkaddr (NULL , node_page, ofs_in_node);Signature · 1 line
2.32.0