Commit 3a48a9a0 authored by sunshijie's avatar sunshijie Committed by Matthias Männich
Browse files

UPSTREAM: erofs: stop parsing non-compact HEAD index if clusterofs is invalid

Syzbot generated a crafted image [1] with a non-compact HEAD index of
clusterofs 33024 while valid numbers should be 0 ~ lclustersize-1,
which causes the following unexpected behavior as below:

 BUG: unable to handle page fault for address: fffff52101a3fff9
 #PF: supervisor read access in kernel mode
 #PF: error_code(0x0000) - not-present page
 PGD 23ffed067 P4D 23ffed067 PUD 0
 Oops: 0000 [#1] PREEMPT SMP KASAN
 CPU: 1 PID: 4398 Comm: kworker/u5:1 Not tainted 6.3.0-rc6-syzkaller-g09a9639e56c0 #0
 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/30/2023
 Workqueue: erofs_worker z_erofs_decompressqueue_work
 RIP: 0010:z_erofs_decompress_queue+0xb7e/0x2b40
 ...
 Call Trace:
  <TASK>
  z_erofs_decompressqueue_work+0x99/0xe0
  process_one_work+0x8f6/0x1170
  worker_thread+0xa63/0x1210
  kthread+0x270/0x300
  ret_from_fork+0x1f/0x30

Note that normal images or images using compact indexes are not
impacted.  Let's fix this now.

[1] https://lore.kernel.org/r/000000000000ec75b005ee97fbaa@google.com



Reported-and-tested-by: default avatar <syzbot+aafb3f37cfeb6534c4ac@syzkaller.appspotmail.com>
Fixes: 02827e17 ("staging: erofs: add erofs_map_blocks_iter")
Fixes: 152a333a ("staging: erofs: add compacted compression indexes support")
Signed-off-by: default avatarGao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: default avatarChao Yu <chao@kernel.org>
Link: https://lore.kernel.org/r/20230410173714.104604-1-hsiangkao@linux.alibaba.com
(cherry picked from commit cc4efd3d
    https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git

 dev)
Bug: 296824280
Bug: 298150234
Change-Id: I8e4d7d3f30d70f8c4ab42b33f215af1292c57fcf
Signed-off-by: default avatarsunshijie <sunshijie@xiaomi.corp-partner.google.com>
Signed-off-by: default avatarsunshijie <sunshijie@xiaomi.com>
(cherry picked from commit 6ec6eee8)
parent 733464d3
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment