CVE-2024-56780

CVE-2024-56780

Medium · published January 8, 2025

CVSS v3.1
5.5
EPSS
0%
Percentile
11.5
In the wild
Unconfirmed
What it is

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.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00217 · 11.5th percentile
Published
2025-01-08T23:15Z
Affected products (9)
ProductVersionsFixed in
linux/linux_kernel≥ 4.19.295, < 4.204.20
linux/linux_kernel≥ 5.4.257, < 5.4.2875.4.287
linux/linux_kernel≥ 5.10.195, < 5.10.2315.10.231
linux/linux_kernel≥ 5.15.132, < 5.15.1745.15.174
linux/linux_kernel≥ 6.1.53, < 6.1.1206.1.120
linux/linux_kernel≥ 6.4.16, < 6.56.5
linux/linux_kernel≥ 6.5.3, < 6.6.646.6.64
linux/linux_kernel≥ 6.7, < 6.12.46.12.4
linux/linux_kernelall versions—
References (11)
EPSS history
Timeline
  • 08 JAN 17:49Z
    quota: flush quota_release_work upon quota writeback
    cvelistv5