CVE-2024-56780

quota: flush quota_release_work upon quota writeback

State
Published
Severity
5.5 Medium
Published
Jan 8, 2025
Updated
Oct 15, 2026
Reserved
Dec 29, 2024

Read the record on cve.org

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.

Scores

CVSSScoreVectorSource
3.15.5 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:HCISA-ADP

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • d40c192e119892799dd4ddf94f5cea6fa93775ef to before a5abba5e0e586e258ded3e798fe5f69c66fec198Affected
  • 86d89987f0998c98f57d641e308b40452a994045 to before 6f3821acd7c3143145999248087de5fb4b48cf26Affected
  • 89602de9a2d7080b7a4029d5c1bf8f78d295ff5f to before ab6cfcf8ed2c7496f55d020b65b1d8cd55d9a2cbAffected
  • 3027e200dd58d5b437f16634dbbd355b29ffe0a6 to before 3e6ff207cd5bd924ad94cd1a7c633bcdac0ba1cbAffected
  • dabc8b20756601b9e1cc85a81d47d3f98ed4d13a to before bcacb52a985f1b6d280f698a470b873dfe52728aAffected
  • dabc8b20756601b9e1cc85a81d47d3f98ed4d13a to before 8ea87e34792258825d290f4dc5216276e91cb224Affected
  • dabc8b20756601b9e1cc85a81d47d3f98ed4d13a to before ac6f420291b3fee1113f21d612fa88b628afab5bAffected
  • f3e9a2bbdeb8987508dd6bb2b701dea911d4daecAffected
  • 903fc5d8cb48b0d2de7095ef40e39fd32bb27bd0Affected
  • 31bed65eecbc5ce57592cfe31947eaa64e3d678eAffected
  • 5.4.257 to before 5.4.287Affected
  • 5.10.195 to before 5.10.231Affected
  • 5.15.132 to before 5.15.174Affected
  • 6.1.53 to before 6.1.120Affected
  • 4.19.295 to before 4.20Affected
  • 6.4.16 to before 6.5Affected
  • 6.5.3 to before 6.6Affected
LinuxLinux
  • 6.6Affected
  • before 6.6Not affected
  • 5.4.287 through 5.4.*Not affected
  • 5.10.231 through 5.10.*Not affected
  • 5.15.174 through 5.15.*Not affected
  • 6.1.120 through 6.1.*Not affected
  • 6.6.64 through 6.6.*Not affected
  • 6.12.4 through 6.12.*Not affected
  • 6.13 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.