Files
linux/fs
Gao Xiang ebdc993453 erofs: fix file-backed mounts no longer working on EROFS partitions
[ Upstream commit 7893cc1225 ]

Sheng Yong reported [1] that Android APEX images didn't work with commit
072a7c7cdb ("erofs: don't bother with s_stack_depth increasing for
now") because "EROFS-formatted APEX file images can be stored within an
EROFS-formatted Android system partition."

In response, I sent a quick fat-fingered [PATCH v3] to address the
report.  Unfortunately, the updated condition was incorrect:

         if (erofs_is_fileio_mode(sbi)) {
-            sb->s_stack_depth =
-                file_inode(sbi->dif0.file)->i_sb->s_stack_depth + 1;
-            if (sb->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) {
-                erofs_err(sb, "maximum fs stacking depth exceeded");
+            inode = file_inode(sbi->dif0.file);
+            if ((inode->i_sb->s_op == &erofs_sops && !sb->s_bdev) ||
+                inode->i_sb->s_stack_depth) {

The condition `!sb->s_bdev` is always true for all file-backed EROFS
mounts, making the check effectively a no-op.

The real fix tested and confirmed by Sheng Yong [2] at that time was
[PATCH v3 RESEND], which correctly ensures the following EROFS^2 setup
works:
    EROFS (on a block device) + EROFS (file-backed mount)

But sadly I screwed it up again by upstreaming the outdated [PATCH v3].

This patch applies the same logic as the delta between the upstream
[PATCH v3] and the real fix [PATCH v3 RESEND].

Reported-by: Sheng Yong <shengyong1@xiaomi.com>
Closes: https://lore.kernel.org/r/3acec686-4020-4609-aee4-5dae7b9b0093@gmail.com [1]
Fixes: 072a7c7cdb ("erofs: don't bother with s_stack_depth increasing for now")
Link: https://lore.kernel.org/r/243f57b8-246f-47e7-9fb1-27a771e8e9e8@gmail.com [2]
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2026-01-17 16:35:30 +01:00
..
2025-06-10 22:21:16 -04:00
2025-11-12 10:12:39 +01:00
2026-01-02 12:57:08 +01:00
2025-09-13 16:55:07 -07:00
2026-01-08 10:17:10 +01:00
2026-01-17 16:35:10 +01:00
2026-01-17 16:35:10 +01:00
2025-09-16 23:59:38 -04:00
2025-09-21 19:24:50 -04:00
2025-09-26 10:21:23 +02:00
2025-10-07 12:48:33 +02:00
2025-09-01 13:08:01 +02:00
2026-01-02 12:56:37 +01:00
2026-01-08 10:17:10 +01:00
2025-09-29 13:43:52 -07:00
2025-08-29 15:08:07 +02:00
2025-05-23 14:20:44 +02:00