Skip to content

Commit bdb0ca3

Browse files
btzds258richardweinberger
authored andcommitted
ubifs: skip dumping tnc tree when zroot is null
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]>
1 parent 844c6fd commit bdb0ca3

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

fs/ubifs/debug.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -945,16 +945,20 @@ void ubifs_dump_tnc(struct ubifs_info *c)
945945

946946
pr_err("\n");
947947
pr_err("(pid %d) start dumping TNC tree\n", current->pid);
948-
znode = ubifs_tnc_levelorder_next(c, c->zroot.znode, NULL);
949-
level = znode->level;
950-
pr_err("== Level %d ==\n", level);
951-
while (znode) {
952-
if (level != znode->level) {
953-
level = znode->level;
954-
pr_err("== Level %d ==\n", level);
948+
if (c->zroot.znode) {
949+
znode = ubifs_tnc_levelorder_next(c, c->zroot.znode, NULL);
950+
level = znode->level;
951+
pr_err("== Level %d ==\n", level);
952+
while (znode) {
953+
if (level != znode->level) {
954+
level = znode->level;
955+
pr_err("== Level %d ==\n", level);
956+
}
957+
ubifs_dump_znode(c, znode);
958+
znode = ubifs_tnc_levelorder_next(c, c->zroot.znode, znode);
955959
}
956-
ubifs_dump_znode(c, znode);
957-
znode = ubifs_tnc_levelorder_next(c, c->zroot.znode, znode);
960+
} else {
961+
pr_err("empty TNC tree in memory\n");
958962
}
959963
pr_err("(pid %d) finish dumping TNC tree\n", current->pid);
960964
}

0 commit comments

Comments
 (0)