CVE-2024-41023

sched/deadline: Fix task_struct reference leak

State
Published
Severity
Not scored
Published
Jul 29, 2024
Updated
Oct 30, 2026
Reserved
Jul 12, 2024

Read the record on cve.org

Description

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

sched/deadline: Fix task_struct reference leak

During the execution of the following stress test with linux-rt:

stress-ng --cyclic 30 --timeout 30 --minimize --quiet

kmemleak frequently reported a memory leak concerning the task_struct:

unreferenced object 0xffff8881305b8000 (size 16136): comm "stress-ng", pid 614, jiffies 4294883961 (age 286.412s) object hex dump (first 32 bytes): 02 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .@.............. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ debug hex dump (first 16 bytes): 53 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S............... backtrace: [<00000000046b6790>] dup_task_struct+0x30/0x540 [<00000000c5ca0f0b>] copy_process+0x3d9/0x50e0 [<00000000ced59777>] kernel_clone+0xb0/0x770 [<00000000a50befdc>] __do_sys_clone+0xb6/0xf0 [<000000001dbf2008>] do_syscall_64+0x5d/0xf0 [<00000000552900ff>] entry_SYSCALL_64_after_hwframe+0x6e/0x76

The issue occurs in start_dl_timer(), which increments the task_struct reference count and sets a timer. The timer callback, dl_task_timer, is supposed to decrement the reference count upon expiration. However, if enqueue_task_dl() is called before the timer expires and cancels it, the reference count is not decremented, leading to the leak.

This patch fixes the reference leak by ensuring the task_struct reference count is properly decremented when the timer is canceled.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • feff2e65efd8d84cf831668e182b2ce73c604bbb to before 8acaaeb484097f46c93bb6c3f836d1c1c07fcbdcAffected
  • feff2e65efd8d84cf831668e182b2ce73c604bbb to before f8005214946fd1d9fefdeff19c6ce46d60de2cefAffected
  • feff2e65efd8d84cf831668e182b2ce73c604bbb to before 7a54d31face626f62de415ebe77b43f76c3ffaf4Affected
  • feff2e65efd8d84cf831668e182b2ce73c604bbb to before b58652db66c910c2245f5bee7deca41c12d707b9Affected
  • f0e1c1d8ff908a39dd42e723d08f104505dfa601Affected
  • 184c8ab5342450c4ae6fc5d937f9bb06c620dcf1Affected
  • 4.19.257 to before 4.20Affected
  • 5.4.212 to before 5.5Affected
LinuxLinux
  • 5.10Affected
  • before 5.10Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.9.10 through 6.9.*Not affected
  • 6.10 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.