Linux: gfs2: fix quota init duplicate scan
What fixes it
- 7fdcf16e5e14e11028f5bcaa6d25075eb5e876a0LinuxCVE List
- 812a766e2b0a8f4d094393fad13475c57f5f86dbLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
gfs2: fix quota init duplicate scan
gfs2_quota_init() checks for duplicate quota_change IDs while holding qd_lock and the quota hash bucket bitlock. That path used gfs2_qd_search_bucket(), which takes a lockref reference via lockref_get_not_dead().
On PREEMPT_RT this may sleep, which is not allowed under the bucket bitlock, triggering "sleeping function called from invalid context".
Use a no-ref bucket lookup in this path, then continue duplicate handling without taking a lockref there.
Refactor gfs2_qd_search_bucket() to build on top of the no-ref helper so lookup traversal stays in one place.
This patch fixes a bug reported by syzbot.
Text from CVE List
Affected versions 8
- Linuxaffected: de0d95c26c41c1776e4d23b1a8b3f2bcfd1dae5f before 7fdcf16e5e14e11028f5bcaa6d25075eb5e876a0CVE List
- Linuxaffected: de0d95c26c41c1776e4d23b1a8b3f2bcfd1dae5f before 812a766e2b0a8f4d094393fad13475c57f5f86dbCVE List
- Linuxaffected: de0d95c26c41c1776e4d23b1a8b3f2bcfd1dae5f before b99a1f0f18ee50445907f55069e88bcfd8947383CVE List
- Linuxaffected: 6.11CVE List
- Linuxunaffected: all versions before 6.11CVE List
- Linuxunaffected: 6.12.111 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2CVE List