If dot or dotdot is lost, fsck tries to add a new dentry by
f2fs_add_link(). The blkaddr of the directory inode should be
passed to it in order to update the dirty inode at the right
place. This patch fixes the uninitialized `blkaddr' to avoid
corrupting f2fs image.

Signed-off-by: Sheng Yong <shengy...@oppo.com>
---
 fsck/fsck.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/fsck/fsck.c b/fsck/fsck.c
index 18587fe2c973..ab3ede191449 100644
--- a/fsck/fsck.c
+++ b/fsck/fsck.c
@@ -1311,7 +1311,6 @@ skip_blkcnt_fix:
                                        nid, child.dot, child.dotdot);
                        if (c.fix_on) {
                                umode_t mode = le16_to_cpu(node_blk->i.i_mode);
-                               block_t blkaddr;
 
                                ret = convert_inline_dentry(sbi, node_blk,
                                                                &ni->blk_addr);
@@ -1326,7 +1325,7 @@ skip_blkcnt_fix:
                                        ret = f2fs_add_link(sbi, node_blk,
                                                (const unsigned char *)name,
                                                1, nid, map_de_type(mode),
-                                               &blkaddr, 0);
+                                               &ni->blk_addr, 0);
                                        FIX_MSG("add missing '%s' dirent in 
ino: %u, pino: %u, ret:%d",
                                                name, nid, child_d->p_ino, ret);
                                        if (ret)
@@ -1340,7 +1339,7 @@ skip_blkcnt_fix:
                                                (const unsigned char *)name,
                                                2, child_d->p_ino,
                                                map_de_type(mode),
-                                               &blkaddr, 0);
+                                               &ni->blk_addr, 0);
                                        FIX_MSG("add missing '%s' dirent in 
ino: %u, pino: %u, ret:%d",
                                                name, nid, child_d->p_ino, ret);
                                        if (ret)
-- 
2.40.1



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to