summaryrefslogtreecommitdiff
path: root/ubifs-utils/fsck.ubifs/handle_disconnected.c
diff options
context:
space:
mode:
authorYuta Hayama <hayama@lineo.co.jp>2026-02-13 14:55:22 +0100
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2026-04-13 07:32:41 +0200
commita505a2cc56acf493607fdf24cbf129393a0873fa (patch)
treefc5c9bce375e974413051bafee835f7767102255 /ubifs-utils/fsck.ubifs/handle_disconnected.c
parenta75782ee97eb5940c865fd560d846b9a93ed9122 (diff)
fsck.ubifs: fix platform dependant ino_t and loff_t formatting
On architectures such as armv7-a, ino_t and loff_t are unsigned long long rather than unsigned long. In such cases, the printf format specifier "%lu" is not appropriate and causes an incorrect address offset. mtd-utils/ubifs-utils/fsck.ubifs/problem.c:224 log_out(c, "problem: %s, ino %lu, unreachable dentry %s, type %s%s", problem->desc, ifp->file->inum, c->encrypted && !ifp->file->ino.is_xattr ? "<encrypted>" : dent_node->name, ubifs_get_type_name(dent_node->type), key_type(c, &dent_node->key) == UBIFS_XENT_KEY ? "(xattr)" : ""); fsck.ubifs[484] (/dev/ubi0_0,danger mode): problem: Dentry is unreachable, ino 917, unreachable dentry (null), type checksum_typefile Furthermore, running fsck.ubifs with the --debug=4 option will almost certainly cause a SEGV at the following point. mtd-utils/ubifs-utils/fsck.ubifs/check_files.c:103 dbg_fsck("construct file(%lu) for %s node, TNC location %d:%d, in %s", inum, ubifs_get_key_name(key_type(c, key)), sn->lnum, sn->offs, c->dev_name); To ensure functionality regardless of environment, cast ino_t to unsigned long, since it will never be more than 4 bytes. For loff_t, use %lld and cast accordingly. Signed-off-by: Yuta Hayama <hayama@lineo.co.jp> Signed-off-by: Tomas Alvarez Vanoli <tomas.alvarez-vanoli@hitachienergy.com> Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'ubifs-utils/fsck.ubifs/handle_disconnected.c')
-rw-r--r--ubifs-utils/fsck.ubifs/handle_disconnected.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/ubifs-utils/fsck.ubifs/handle_disconnected.c b/ubifs-utils/fsck.ubifs/handle_disconnected.c
index be62522..9e5d925 100644
--- a/ubifs-utils/fsck.ubifs/handle_disconnected.c
+++ b/ubifs-utils/fsck.ubifs/handle_disconnected.c
@@ -117,7 +117,7 @@ static int handle_disonnected_file(struct ubifs_info *c,
struct ubifs_inode *target_ui;
err = snprintf(file_name, sizeof(file_name),
- "INO_%lu_%u", file->inum, index);
+ "INO_%lu_%u", (unsigned long)file->inum, index);
if (err < 0)
goto free_ui;
fname_name(&nm) = file_name;
@@ -138,7 +138,7 @@ static int handle_disonnected_file(struct ubifs_info *c,
kfree(ui);
kfree(lost_found_ui);
log_out(c, "Too many duplicated names(%u) in lost+found for inum %lu",
- index, file->inum);
+ index, (unsigned long)file->inum);
goto delete_file;
}
@@ -150,7 +150,7 @@ static int handle_disonnected_file(struct ubifs_info *c,
goto delete_file;
}
dbg_fsck("recover disconnected file %lu, in %s",
- file->inum, c->dev_name);
+ (unsigned long)file->inum, c->dev_name);
free_ui:
kfree(ui);