Description
In the Linux kernel, the following vulnerability has been resolved: ext4: always drain queued discard work in ext4_mb_release() While reviewing recent ext4 patch[1], Sashiko raised the following concern[2]: > If the filesystem is initially mounted with the discard option, > deleting files will populate sbi->s_discard_list and queue > s_discard_work. If it is then remounted with nodiscard, the > EXT4_MOUNT_DISCARD flag is cleared, but the pending s_discard_work is > neither cancelled nor flushed. [1] https://lore.kernel.org/r/20260319094545.19291-1-qiang.zhang@linux.dev/ [2] https://sashiko.dev/#/patchset/20260319094545.19291-1-qiang.zhang%40linux.dev The concern was valid, but it had nothing to do with the patch[1]. One of the problems with Sashiko in its current (early) form is that it will detect pre-existing issues and report it as a problem with the patch that it is reviewing. In practice, it would be hard to hit deliberately (unless you are a malicious syzkaller fuzzer), since it would involve mounting the file system with -o discard, and then deleting a large number of files, remounting the file system with -o nodiscard, and then immediately unmounting the file system before the queued discard work has a change to drain on its own. Fix it because it's a real bug, and to avoid Sashiko from raising this concern when analyzing future patches to mballoc.c.
Product status
55cdd0af2bc5ffc92a2deb745627755aecd5db33 (git) before e96c2354b170aaa53300c8e8fd59e41b133160f7
55cdd0af2bc5ffc92a2deb745627755aecd5db33 (git) before c360e9d0def4f4ae03254a67c683103908555b75
55cdd0af2bc5ffc92a2deb745627755aecd5db33 (git) before 1c82f863f090ab899085bdfade073313384b514b
55cdd0af2bc5ffc92a2deb745627755aecd5db33 (git) before 9b4d9dda6a71ad3425c8109d27c4c6bfb9da97b8
55cdd0af2bc5ffc92a2deb745627755aecd5db33 (git) before 812b6a7cd3e7f3a3e8a24db85bc6313c26cb1098
55cdd0af2bc5ffc92a2deb745627755aecd5db33 (git) before b4737e26d4688b8aea88ad6ea4dbfeb6e78b0327
55cdd0af2bc5ffc92a2deb745627755aecd5db33 (git) before 9ee29d20aab228adfb02ca93f87fb53c56c2f3af
5.15
Any version before 5.15
5.15.203 (semver)
6.1.168 (semver)
6.6.131 (semver)
6.12.80 (semver)
6.18.21 (semver)
6.19.11 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/e96c2354b170aaa53300c8e8fd59e41b133160f7
git.kernel.org/...c/c360e9d0def4f4ae03254a67c683103908555b75
git.kernel.org/...c/1c82f863f090ab899085bdfade073313384b514b
git.kernel.org/...c/9b4d9dda6a71ad3425c8109d27c4c6bfb9da97b8
git.kernel.org/...c/812b6a7cd3e7f3a3e8a24db85bc6313c26cb1098
git.kernel.org/...c/b4737e26d4688b8aea88ad6ea4dbfeb6e78b0327
git.kernel.org/...c/9ee29d20aab228adfb02ca93f87fb53c56c2f3af