CVE-2024-50280

dm cache: fix flushing uninitialized delayed_work on cache_ctr error

State
Published
Severity
7.8 High
Published
Nov 19, 2024
Updated
May 23, 2026
Reserved
Oct 21, 2024

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

dm cache: fix flushing uninitialized delayed_work on cache_ctr error

An unexpected WARN_ON from flush_work() may occur when cache creation fails, caused by destroying the uninitialized delayed_work waker in the error path of cache_create(). For example, the warning appears on the superblock checksum error.

Reproduce steps:

dmsetup create cmeta --table "0 8192 linear /dev/sdc 0" dmsetup create cdata --table "0 65536 linear /dev/sdc 8192" dmsetup create corig --table "0 524288 linear /dev/sdc 262144" dd if=/dev/urandom of=/dev/mapper/cmeta bs=4k count=1 oflag=direct dmsetup create cache --table "0 524288 cache /dev/mapper/cmeta \ /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0"

Kernel logs:

(snip) WARNING: CPU: 0 PID: 84 at kernel/workqueue.c:4178 __flush_work+0x5d4/0x890

Fix by pulling out the cancel_delayed_work_sync() from the constructor's error path. This patch doesn't affect the use-after-free fix for concurrent dm_resume and dm_destroy (commit 6a459d8edbdb ("dm cache: Fix UAF in destroy()")) as cache_dtr is not changed.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HCISA-ADP

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • 2b17026685a270b2beaf1cdd9857fcedd3505c7e to before 40fac0271c7aedf60d81ed8214e80851e5b26312Affected
  • d2a0b298ebf83ab6236f66788a3541e91ce75a70 to before d154b333a5667b6c1b213a11a41ad7aaccd10c3dAffected
  • 6a3e412c2ab131c54945327a7676b006f000a209 to before 5a754d3c771280f2d06bf8ab716d6a0d36ca256eAffected
  • 6a459d8edbdbe7b24db42a5a9f21e6aa9e00c2aa to before 8cc12dab635333c4ea28e72d7b947be7d0543c2cAffected
  • 6a459d8edbdbe7b24db42a5a9f21e6aa9e00c2aa to before aee3ecda73ce13af7c3e556383342b57e6bd0718Affected
  • 6a459d8edbdbe7b24db42a5a9f21e6aa9e00c2aa to before 135496c208ba26fd68cdef10b64ed7a91ac9a7ffAffected
  • 034cbc8d3b47a56acd89453c29632a9c117de09dAffected
  • 993406104d2b28fe470126a062ad37a1e21e792eAffected
  • 4d20032dd90664de09f2902a7ea49ae2f7771746Affected
  • 2f097dfac7579fd84ff98eb1d3acd41d53a485f3Affected
  • 6ac4f36910764cb510bafc4c3768544f86ca48caAffected
  • 5.10.163 to before 5.10.237Affected
  • 5.15.87 to before 5.15.181Affected
  • 6.1.4 to before 6.1.117Affected
  • 4.9.337 to before 4.10Affected
  • 4.14.303 to before 4.15Affected
  • 4.19.270 to before 4.20Affected
  • 5.4.229 to before 5.5Affected
  • 6.0.18 to before 6.1Affected
LinuxLinux
  • 6.2Affected
  • before 6.2Not affected
  • 5.10.237 through 5.10.*Not affected
  • 5.15.181 through 5.15.*Not affected
  • 6.1.117 through 6.1.*Not affected
  • 6.6.61 through 6.6.*Not affected
  • 6.11.8 through 6.11.*Not affected
  • 6.12 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.