diff options
author | Ravi Minnikanti <rminnikanti@marvell.com> | 2024-07-30 02:14:57 -0700 |
---|---|---|
committer | Heiko Schocher <hs@denx.de> | 2024-08-10 11:56:53 +0200 |
commit | cf7ea719ce60cd885cce5023dfaf7833d9fc1442 (patch) | |
tree | b37d721ed20b4714a1660dfc90346d0a0d5a565d | |
parent | ca1f11d8c11dacd91c3bfd8e39d41db349e83f8b (diff) | |
download | u-boot-cf7ea719ce60cd885cce5023dfaf7833d9fc1442.tar.gz u-boot-cf7ea719ce60cd885cce5023dfaf7833d9fc1442.tar.bz2 u-boot-cf7ea719ce60cd885cce5023dfaf7833d9fc1442.zip |
ubifs: mount fails after power cycle
When kernel uses file system encryption, fscrypt on UBIFS v5,
after a hard power cycle UBIFS journal replay fails which results in mount failure.
Failure logs:
UBIFS: recovery needed
UBIFS error (pid 0): ubifs_validate_entry: bad directory entry node
UBIFS error (pid 0): replay_bud: bad node is at LEB 890:24576
UBIFS error (pid 0): ubifs_mount: Error reading superblock on volume 'ubi0:rootfs' errno=-22!
This change is ported from kernel:
commit id: 304790c038bc4af4f19774705409db27eafb09fc
Kernel commit description:
Kernel commit description:
ubifs: Relax checks in ubifs_validate_entry()
With encrypted filenames we store raw binary data, doing
string tests is no longer possible.
Signed-off-by: rminnikanti <rminnikanti@marvell.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
-rw-r--r-- | fs/ubifs/replay.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ubifs/replay.c b/fs/ubifs/replay.c index aa7f281ef6..b6e03b76d4 100644 --- a/fs/ubifs/replay.c +++ b/fs/ubifs/replay.c @@ -451,7 +451,7 @@ int ubifs_validate_entry(struct ubifs_info *c, if (le32_to_cpu(dent->ch.len) != nlen + UBIFS_DENT_NODE_SZ + 1 || dent->type >= UBIFS_ITYPES_CNT || nlen > UBIFS_MAX_NLEN || dent->name[nlen] != 0 || - strnlen(dent->name, nlen) != nlen || + (key_type == UBIFS_XENT_KEY && strnlen(dent->name, nlen) != nlen) || le64_to_cpu(dent->inum) > MAX_INUM) { ubifs_err(c, "bad %s node", key_type == UBIFS_DENT_KEY ? "directory entry" : "extended attribute entry"); |