Skip to content
Commit 118a8cf5 authored by Gao Xiang's avatar Gao Xiang
Browse files

erofs: fix inconsistent per-file compression format



EROFS can select compression algorithms on a per-file basis, and each
per-file compression algorithm needs to be marked in the on-disk
superblock for initialization.

However, syzkaller can generate inconsistent crafted images that use
an unsupported algorithmtype for specific inodes, e.g. use MicroLZMA
algorithmtype even it's not set in `sbi->available_compr_algs`.  This
can lead to an unexpected "BUG: kernel NULL pointer dereference" if
the corresponding decompressor isn't built-in.

Fix this by checking against `sbi->available_compr_algs` for each
m_algorithmformat request.  Incorrect !erofs_sb_has_compr_cfgs preset
bitmap is now fixed together since it was harmless previously.

Reported-by: default avatar <bugreport@ubisectech.com>
Fixes: 8f899262 ("erofs: get compression algorithms directly on mapping")
Fixes: 622ceadd

 ("erofs: lzma compression support")
Reviewed-by: default avatarYue Hu <huyue2@coolpad.com>
Link: https://lore.kernel.org/r/20240113150602.1471050-1-hsiangkao@linux.alibaba.com
Signed-off-by: default avatarGao Xiang <hsiangkao@linux.alibaba.com>
parent 0dd3ee31
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment