Skip to content

Commit 525b861

Browse files
juntongdengkleikamp
authored andcommitted
fs/jfs: Add check for negative db_l2nbperpage
l2nbperpage is log2(number of blks per page), and the minimum legal value should be 0, not negative. In the case of l2nbperpage being negative, an error will occur when subsequently used as shift exponent. Syzbot reported this bug: UBSAN: shift-out-of-bounds in fs/jfs/jfs_dmap.c:799:12 shift exponent -16777216 is negative Reported-by: [email protected] Closes: https://syzkaller.appspot.com/bug?extid=debee9ab7ae2b34b0307 Signed-off-by: Juntong Deng <[email protected]> Signed-off-by: Dave Kleikamp <[email protected]>
1 parent 5e62ed3 commit 525b861

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

fs/jfs/jfs_dmap.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,8 @@ int dbMount(struct inode *ipbmap)
180180
bmp->db_nfree = le64_to_cpu(dbmp_le->dn_nfree);
181181

182182
bmp->db_l2nbperpage = le32_to_cpu(dbmp_le->dn_l2nbperpage);
183-
if (bmp->db_l2nbperpage > L2PSIZE - L2MINBLOCKSIZE) {
183+
if (bmp->db_l2nbperpage > L2PSIZE - L2MINBLOCKSIZE ||
184+
bmp->db_l2nbperpage < 0) {
184185
err = -EINVAL;
185186
goto err_release_metapage;
186187
}

0 commit comments

Comments
 (0)