High · published September 15, 2025
In the Linux kernel, the following vulnerability has been resolved:
jfs: jfs_dmap: Validate db_l2nbperpage while mounting
In jfs_dmap.c at line 381, BLKTODMAP is used to get a logical block
number inside dbFree(). db_l2nbperpage, which is the log2 number of
blocks per page, is passed as an argument to BLKTODMAP which uses it
for shifting.
Syzbot reported a shift out-of-bounds crash because db_l2nbperpage is
too big. This happens because the large value is set without any
validation in dbMount() at line 181.
Thus, make sure that db_l2nbperpage is correct while mounting.
Max number of blocks per page = Page size / Min block size
=> log2(Max num_block per page) = log2(Page size / Min block size)
= log2(Page size) - log2(Min block size)
=> Max db_l2nbperpage = L2PSIZE - L2MINBLOCKSIZE
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | < 4.14.322 | 4.14.322 |
| linux/linux_kernel | ≥ 4.15, < 4.19.291 | 4.19.291 |
| linux/linux_kernel | ≥ 4.20, < 5.4.251 | 5.4.251 |
| linux/linux_kernel | ≥ 5.5, < 5.10.188 | 5.10.188 |
| linux/linux_kernel | ≥ 5.11, < 5.15.121 | 5.15.121 |
| linux/linux_kernel | ≥ 5.16, < 6.1.40 | 6.1.40 |
| linux/linux_kernel | ≥ 6.2, < 6.4.5 | 6.4.5 |