Skip to content

Commit

Permalink
ubifs: skip dumping tnc tree when zroot is null
Browse files Browse the repository at this point in the history
Clearing slab cache will free all znode in memory and make
c->zroot.znode = NULL, then dumping tnc tree will access
c->zroot.znode which cause null pointer dereference.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=219624#c0
Fixes: 1e51764 ("UBIFS: add new flash file system")
Signed-off-by: pangliyuan <[email protected]>
Reviewed-by: Zhihao Cheng <[email protected]>
Signed-off-by: Richard Weinberger <[email protected]>
  • Loading branch information
btzds258 authored and richardweinberger committed Jan 18, 2025
1 parent 844c6fd commit bdb0ca3
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions fs/ubifs/debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -945,16 +945,20 @@ void ubifs_dump_tnc(struct ubifs_info *c)

pr_err("\n");
pr_err("(pid %d) start dumping TNC tree\n", current->pid);
znode = ubifs_tnc_levelorder_next(c, c->zroot.znode, NULL);
level = znode->level;
pr_err("== Level %d ==\n", level);
while (znode) {
if (level != znode->level) {
level = znode->level;
pr_err("== Level %d ==\n", level);
if (c->zroot.znode) {
znode = ubifs_tnc_levelorder_next(c, c->zroot.znode, NULL);
level = znode->level;
pr_err("== Level %d ==\n", level);
while (znode) {
if (level != znode->level) {
level = znode->level;
pr_err("== Level %d ==\n", level);
}
ubifs_dump_znode(c, znode);
znode = ubifs_tnc_levelorder_next(c, c->zroot.znode, znode);
}
ubifs_dump_znode(c, znode);
znode = ubifs_tnc_levelorder_next(c, c->zroot.znode, znode);
} else {
pr_err("empty TNC tree in memory\n");
}
pr_err("(pid %d) finish dumping TNC tree\n", current->pid);
}
Expand Down

0 comments on commit bdb0ca3

Please sign in to comment.