High · published June 25, 2024
In the Linux kernel, the following vulnerability has been resolved:
nilfs2: fix nilfs_empty_dir() misjudgment and long loop on I/O errors
The error handling in nilfs_empty_dir() when a directory folio/page read
fails is incorrect, as in the old ext2 implementation, and if the
folio/page cannot be read or nilfs_check_folio() fails, it will falsely
determine the directory as empty and corrupt the file system.
In addition, since nilfs_empty_dir() does not immediately return on a
failed folio/page read, but continues to loop, this can cause a long loop
with I/O if i_size of the directory's inode is also corrupted, causing the
log writer thread to wait and hang, as reported by syzbot.
Fix these issues by making nilfs_empty_dir() immediately return a false
value (0) if it fails to get a directory folio/page.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 2.6.30, < 4.19.317 | 4.19.317 |
| linux/linux_kernel | ≥ 4.20, < 5.4.279 | 5.4.279 |
| linux/linux_kernel | ≥ 5.5, < 5.10.221 | 5.10.221 |
| linux/linux_kernel | ≥ 5.11, < 5.15.162 | 5.15.162 |
| linux/linux_kernel | ≥ 5.16, < 6.1.95 | 6.1.95 |
| linux/linux_kernel | ≥ 6.2, < 6.6.35 | 6.6.35 |
| linux/linux_kernel | ≥ 6.7, < 6.9.5 | 6.9.5 |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |