Hi Hongbo,

On 2025/10/11 15:37, Hongbo Li wrote:
Hi Xiang,


...

@@ -732,6 +733,10 @@ static int z_erofs_map_sanity_check(struct inode *inode,
      if (unlikely(map->m_plen > Z_EROFS_PCLUSTER_MAX_SIZE ||
               map->m_llen > Z_EROFS_PCLUSTER_MAX_DSIZE))
          return -EOPNOTSUPP;
+    /* Filesystems beyond 48-bit physical addresses are invalid */
+    if (unlikely(check_add_overflow(map->m_pa, map->m_plen, &pend) ||
+             pend >= BIT_ULL(48)))

Should we consider the non 48-bit block layout which the max is BIT_ULL(32) ?

Non-48bit block layout is strictly limited by the on-disk
__le32, so it's totally impossible to get >= 32-bit
addresses I think it's unnecessary.

but btw, this part is actually wrong, it should be
(pend >> sbi->blkszbits) >= BIT_ULL(48)

I will fix it soon.

Thanks,
Gao Xiang


Thanks,
Hongbo

+        return -EFSCORRUPTED;
      return 0;
  }


Reply via email to