Message ID | eae14602-7809-882f-1935-a271a49ee585@marvell.com |
---|---|
State | Accepted |
Commit | cf7ea719ce60cd885cce5023dfaf7833d9fc1442 |
Delegated to: | Heiko Schocher |
Headers | show |
Series | ubifs: mount fails after power cycle | expand |
Hello Ravi, On 30.07.24 11:14, Ravi Minnikanti wrote: > > 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. > > ~ > > Change-Id: I487ae4d172e228e72ac31d158d668f209142bce0 > Signed-off-by: rminnikanti <rminnikanti@marvell.com> > --- > fs/ubifs/replay.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Good catch, thanks! Reviewed-by: Heiko Schocher <hs@denx.de> bye, Heiko
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");
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. ~ Change-Id: I487ae4d172e228e72ac31d158d668f209142bce0 Signed-off-by: rminnikanti <rminnikanti@marvell.com> --- fs/ubifs/replay.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)