CVE-2024-56780 quota: flush quota_release_work upon quota writeback
A race condition in the Linux kernel quota subsystem can trigger a warning and potential instability during filesystem freeze operations.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Local or same network only
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2024-56780?
CVE-2024-56780 is a medium-severity vulnerability in Linux kernel, published on 8 Jan 2025. It can only be exploited from the same machine or local network, with no action from the victim.
Official description
In the Linux kernel, the following vulnerability has been resolved:
quota: flush quota_release_work upon quota writeback
One of the paths quota writeback is called from is:
freeze_super() sync_filesystem() ext4_sync_fs() dquot_writeback_dquots()
Since we currently don't always flush the quota_release_work queue in this path, we can end up with the following race:
1. dquot are added to releasing_dquots list during regular operations. 2. FS Freeze starts, however, this does not flush the quota_release_work queue. 3. Freeze completes. 4. Kernel eventually tries to flush the workqueue while FS is frozen which hits a WARN_ON since transaction gets started during frozen state:
ext4_journal_check_start+0x28/0x110 [ext4] (unreliable) __ext4_journal_start_sb+0x64/0x1c0 [ext4] ext4_release_dquot+0x90/0x1d0 [ext4] quota_release_workfn+0x43c/0x4d0
Which is the following line:
WARN_ON(sb->s_writers.frozen == SB_FREEZE_COMPLETE);
Which ultimately results in generic/390 failing due to dmesg noise. This was detected on powerpc machine 15 cores.
To avoid this, make sure to flush the workqueue during dquot_writeback_dquots() so we dont have any pending workitems after freeze.
Which versions are affected by CVE-2024-56780?
It affects 1 product.
Products include Linux kernel.
How do I fix CVE-2024-56780?
Apply the vendor's patch.
Is CVE-2024-56780 being exploited?
There is no known exploitation of CVE-2024-56780 in the wild and no public exploit code.
Other vulnerabilities in Linux kernel
Sources
Also known as AZL-55322, AZL-55328, BELL-CVE-2024-56780, DEBIAN-CVE-2024-56780, GHSA-95w3-8433-6jf6, UBUNTU-CVE-2024-56780.