fs: jfs: fix shift-out-of-bounds in dbAllocAG
authorDongliang Mu <mudongliangabcd@gmail.com>
Tue, 18 Oct 2022 13:48:07 +0000 (08:48 -0500)
committerDave Kleikamp <dave.kleikamp@oracle.com>
Tue, 18 Oct 2022 13:49:42 +0000 (08:49 -0500)
commit898f706695682b9954f280d95e49fa86ffa55d08
treeabd223efffb99bcf200b2fafa0a9282fe34f51c8
parentbbb8ceb5e2421184db9560e9d2cfaf858e1db616
fs: jfs: fix shift-out-of-bounds in dbAllocAG

Syzbot found a crash : UBSAN: shift-out-of-bounds in dbAllocAG. The
underlying bug is the missing check of bmp->db_agl2size. The field can
be greater than 64 and trigger the shift-out-of-bounds.

Fix this bug by adding a check of bmp->db_agl2size in dbMount since this
field is used in many following functions. The upper bound for this
field is L2MAXL2SIZE - L2MAXAG, thanks for the help of Dave Kleikamp.
Note that, for maintenance, I reorganized error handling code of dbMount.

Reported-by: syzbot+15342c1aa6a00fb7a438@syzkaller.appspotmail.com
Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
fs/jfs/jfs_dmap.c