CVE-2024-41023

Updated on 29 Jul 2024

Severity

5.5 Medium severity

Details

CVSS score
5.5
CVSS vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Overview

About vulnerability

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.

Details

Fixes

KernelCare state

Live-patch status from KernelCare for each operating system.

Operating system Status Covered kernels
AlmaLinux 8 Released
42 kernels
  • 4.18.0-240.15.1.el8_3
  • 4.18.0-553.el8_10
  • 4.18.0-240.22.1.el8_3
  • 4.18.0-305.10.2.el8_4
  • 4.18.0-305.12.1.el8_4
  • 4.18.0-305.17.1.el8_4
  • 4.18.0-305.19.1.el8_4
  • 4.18.0-305.25.1.el8_4
  • 4.18.0-305.3.1.el8_4
  • 4.18.0-305.7.1.el8_4
  • 4.18.0-305.el8
  • 4.18.0-348.12.2.el8_5
  • 4.18.0-348.2.1.el8_5
  • 4.18.0-348.20.1.el8_5
  • 4.18.0-348.23.1.el8_5
  • 4.18.0-348.7.1.el8_5
  • 4.18.0-348.el8
  • 4.18.0-372.13.1.el8_6
  • 4.18.0-372.16.1.el8_6
  • 4.18.0-372.19.1.el8_6
  • 4.18.0-372.26.1.el8_6
  • 4.18.0-372.32.1.el8_6
  • 4.18.0-372.9.1.el8
  • 4.18.0-425.10.1.el8_7
  • 4.18.0-425.13.1.el8_7
  • 4.18.0-425.19.2.el8_7
  • 4.18.0-425.3.1.el8
  • 4.18.0-477.10.1.el8_8
  • 4.18.0-477.13.1.el8_8
  • 4.18.0-477.15.1.el8_8
  • 4.18.0-477.21.1.el8_8
  • 4.18.0-477.27.1.el8_8
  • 4.18.0-477.27.2.el8_8
  • 4.18.0-513.11.1.el8_9
  • 4.18.0-513.18.1.el8_9
  • 4.18.0-513.18.2.el8_9
  • 4.18.0-513.24.1.el8_9
  • 4.18.0-513.5.1.el8_9
  • 4.18.0-513.9.1.el8_9
  • 4.18.0-553.16.1.el8_10
  • 4.18.0-553.5.1.el8_10
  • 4.18.0-553.8.1.el8_10
CentOS 8 Released
12 kernels
  • 4.18.0-240.15.1.el8_3
  • 4.18.0-240.22.1.el8_3
  • 4.18.0-305.10.2.el8_4
  • 4.18.0-305.12.1.el8_4
  • 4.18.0-305.17.1.el8_4
  • 4.18.0-305.19.1.el8_4
  • 4.18.0-305.25.1.el8_4
  • 4.18.0-305.3.1.el8
  • 4.18.0-305.7.1.el8_4
  • 4.18.0-348.2.1.el8_5
  • 4.18.0-348.7.1.el8_5
  • 4.18.0-348.el8
CloudLinux OS 7h Released
53 kernels
  • 4.18.0-305.10.2.2.lve.el7h
  • 4.18.0-305.10.2.lve.el7h
  • 4.18.0-305.12.1.lve.el7h
  • 4.18.0-305.17.1.lve.el7h
  • 4.18.0-305.19.1.lve.el7h
  • 4.18.0-305.7.1.lve.el7h
  • 4.18.0-305.lve.el7h
  • 4.18.0-348.12.2.lve.1.el7h
  • 4.18.0-348.12.2.lve.2.el7h
  • 4.18.0-348.12.2.lve.el7h
  • 4.18.0-348.20.1.lve.1.el7h
  • 4.18.0-348.20.1.lve.el7h
  • 4.18.0-348.23.1.lve.el7h
  • 4.18.0-348.7.1.lve.el7h
  • 4.18.0-348.lve.el7h
  • 4.18.0-372.13.1.lve.el7h
  • 4.18.0-372.16.1.lve.el7h
  • 4.18.0-372.19.1.lve.el7h
  • 4.18.0-372.26.1.lve.1.el7h
  • 4.18.0-372.32.1.lve.el7h
  • 4.18.0-372.9.1.lve.el7h
  • 4.18.0-425.10.1.lve.el7h
  • 4.18.0-425.13.1.lve.el7h
  • 4.18.0-425.19.2.lve.el7h
  • 4.18.0-425.3.1.lve.1.el7h
  • 4.18.0-425.3.1.lve.2.el7h
  • 4.18.0-425.3.1.lve.3.el7h
  • 4.18.0-425.3.1.lve.el7h
  • 4.18.0-477.10.1.lve.1.el7h
  • 4.18.0-477.13.1.lve.1.el7h
  • 4.18.0-477.13.1.lve.el7h
  • 4.18.0-477.15.1.lve.1.el7h
  • 4.18.0-477.15.1.lve.2.el7h
  • 4.18.0-477.21.1.lve.1.el7h
  • 4.18.0-477.21.1.lve.el7h
  • 4.18.0-477.27.1.lve.el7h
  • 4.18.0-477.27.2.lve.el7h
  • 4.18.0-513.11.1.lve.1.el7h
  • 4.18.0-513.11.1.lve.el7h
  • 4.18.0-513.18.1.lve.1.el7h
  • 4.18.0-513.18.1.lve.2.el7h
  • 4.18.0-513.18.1.lve.el7h
  • 4.18.0-513.24.1.lve.1.el7h
  • 4.18.0-513.24.1.lve.2.el7h
  • 4.18.0-513.24.1.lve.el7h
  • 4.18.0-513.5.1.lve.el7h
  • 4.18.0-513.9.1.lve.el7h
  • 4.18.0-553.16.1.lve.1.el7h
  • 4.18.0-553.16.1.lve.el7h
  • 4.18.0-553.5.1.lve.1.el7h
  • 4.18.0-553.5.1.lve.el7h
  • 4.18.0-553.8.1.lve.el7h
  • 4.18.0-553.lve.el7h
CloudLinux OS 8 Released
51 kernels
  • 4.18.0-553.lve.el8
  • 4.18.0-305.10.2.2.lve.el8
  • 4.18.0-305.10.2.lve.el8
  • 4.18.0-305.12.1.lve.el8
  • 4.18.0-305.17.1.lve.el8
  • 4.18.0-305.19.1.lve.el8
  • 4.18.0-305.7.1.lve.el8
  • 4.18.0-305.lve.el8
  • 4.18.0-348.12.2.lve.el8
  • 4.18.0-348.20.1.lve.1.el8
  • 4.18.0-348.20.1.lve.el8
  • 4.18.0-348.23.1.lve.el8
  • 4.18.0-348.7.1.lve.el8
  • 4.18.0-348.lve.el8
  • 4.18.0-372.13.1.lve.el8
  • 4.18.0-372.16.1.lve.el8
  • 4.18.0-372.19.1.lve.el8
  • 4.18.0-372.26.1.lve.1.el8
  • 4.18.0-372.32.1.lve.el8
  • 4.18.0-372.9.1.1.lve.el8
  • 4.18.0-372.9.1.lve.el8
  • 4.18.0-425.10.1.lve.el8
  • 4.18.0-425.13.1.lve.el8
  • 4.18.0-425.19.2.lve.el8
  • 4.18.0-425.3.1.lve.1.el8
  • 4.18.0-425.3.1.lve.2.el8
  • 4.18.0-425.3.1.lve.3.el8
  • 4.18.0-425.3.1.lve.el8
  • 4.18.0-477.10.1.lve.el8
  • 4.18.0-477.13.1.lve.1.el8
  • 4.18.0-477.13.1.lve.el8
  • 4.18.0-477.15.1.lve.2.el8
  • 4.18.0-477.21.1.lve.1.el8
  • 4.18.0-477.21.1.lve.el8
  • 4.18.0-477.27.1.lve.el8
  • 4.18.0-477.27.2.lve.el8
  • 4.18.0-513.11.1.lve.el8
  • 4.18.0-513.18.1.lve.1.el8
  • 4.18.0-513.18.1.lve.2.el8
  • 4.18.0-513.18.1.lve.el8
  • 4.18.0-513.24.1.lve.1.el8
  • 4.18.0-513.24.1.lve.2.el8
  • 4.18.0-513.24.1.lve.el8
  • 4.18.0-513.5.1.lve.el8
  • 4.18.0-513.9.1.lve.el8
  • 4.18.0-544.lve.el8
  • 4.18.0-553.16.1.lve.1.el8
  • 4.18.0-553.16.1.lve.el8
  • 4.18.0-553.5.1.lve.1.el8
  • 4.18.0-553.5.1.lve.el8
  • 4.18.0-553.8.1.lve.el8
Oracle Linux 8 Released
44 kernels
  • 4.18.0-240.15.1.el8_3
  • 4.18.0-240.22.1.el8_3
  • 4.18.0-305.10.2.el8_4
  • 4.18.0-305.12.1.el8_4
  • 4.18.0-305.17.1.el8_4
  • 4.18.0-305.19.1.el8_4
  • 4.18.0-305.25.1.el8_4
  • 4.18.0-305.3.1.el8_4
  • 4.18.0-305.7.1.el8_4
  • 4.18.0-305.el8
  • 4.18.0-348.12.2.el8_5
  • 4.18.0-348.2.1.el8_5
  • 4.18.0-348.20.1.el8_5
  • 4.18.0-348.23.1.el8_5
  • 4.18.0-348.7.1.el8_5
  • 4.18.0-348.el8
  • 4.18.0-372.13.1.0.1.el8_6
  • 4.18.0-372.16.1.0.1.el8_6
  • 4.18.0-372.19.1.0.1.el8_6
  • 4.18.0-372.26.1.0.1.el8_6
  • 4.18.0-372.32.1.0.1.el8_6
  • 4.18.0-372.9.1.el8
  • 4.18.0-425.10.1.el8_7
  • 4.18.0-425.13.1.el8_7
  • 4.18.0-425.19.2.el8_7
  • 4.18.0-425.3.1.el8
  • 4.18.0-477.10.1.el8_8
  • 4.18.0-477.13.1.el8_8
  • 4.18.0-477.15.1.el8_8
  • 4.18.0-477.21.1.el8_8
  • 4.18.0-477.27.0.1.el8_8
  • 4.18.0-477.27.1.el8_8
  • 4.18.0-513.11.0.1.el8_9
  • 4.18.0-513.18.0.1.el8_9
  • 4.18.0-513.18.0.2.el8_9
  • 4.18.0-513.18.1.0.1.el8_9
  • 4.18.0-513.18.1.el8_9
  • 4.18.0-513.24.1.el8_9
  • 4.18.0-513.5.1.el8_9
  • 4.18.0-513.9.1.el8_9
  • 4.18.0-553.16.1.el8_10
  • 4.18.0-553.5.1.el8_10
  • 4.18.0-553.8.1.el8_10
  • 4.18.0-553.el8_10
RHEL 8 Released
40 kernels
  • 4.18.0-240.15.1.el8_3
  • 4.18.0-240.22.1.el8_3
  • 4.18.0-305.10.2.el8_4
  • 4.18.0-305.12.1.el8_4
  • 4.18.0-305.17.1.el8_4
  • 4.18.0-305.19.1.el8_4
  • 4.18.0-305.25.1.el8_4
  • 4.18.0-305.3.1.el8_4
  • 4.18.0-305.7.1.el8_4
  • 4.18.0-305.el8
  • 4.18.0-348.12.2.el8_5
  • 4.18.0-348.2.1.el8_5
  • 4.18.0-348.20.1.el8_5
  • 4.18.0-348.23.1.el8_5
  • 4.18.0-348.7.1.el8_5
  • 4.18.0-348.el8
  • 4.18.0-372.13.1.el8_6
  • 4.18.0-372.16.1.el8_6
  • 4.18.0-372.19.1.el8_6
  • 4.18.0-372.26.1.el8_6
  • 4.18.0-372.32.1.el8_6
  • 4.18.0-372.9.1.el8
  • 4.18.0-425.10.1.el8_7
  • 4.18.0-425.13.1.el8_7
  • 4.18.0-425.19.2.el8_7
  • 4.18.0-425.3.1.el8
  • 4.18.0-477.10.1.el8_8
  • 4.18.0-477.13.1.el8_8
  • 4.18.0-477.15.1.el8_8
  • 4.18.0-477.21.1.el8_8
  • 4.18.0-477.27.1.el8_8
  • 4.18.0-513.11.1.el8_9
  • 4.18.0-513.18.1.el8_9
  • 4.18.0-513.24.1.el8_9
  • 4.18.0-513.5.1.el8_9
  • 4.18.0-513.9.1.el8_9
  • 4.18.0-553.16.1.el8_10
  • 4.18.0-553.5.1.el8_10
  • 4.18.0-553.8.1.el8_10
  • 4.18.0-553.el8_10
Rocky Linux 8 Released
38 kernels
  • 4.18.0-553.el8_10
  • 4.18.0-305.10.2.el8_4
  • 4.18.0-305.12.1.el8_4
  • 4.18.0-305.17.1.el8_4
  • 4.18.0-305.19.1.el8_4
  • 4.18.0-305.25.1.el8_4
  • 4.18.0-305.3.1.el8_4
  • 4.18.0-305.7.1.el8_4
  • 4.18.0-348.12.2.el8_5
  • 4.18.0-348.2.1.el8_5
  • 4.18.0-348.20.1.el8_5
  • 4.18.0-348.23.1.el8_5
  • 4.18.0-348.7.1.el8_5
  • 4.18.0-372.13.1.el8_6
  • 4.18.0-372.16.1.el8_6.0.1
  • 4.18.0-372.16.1.el8_6
  • 4.18.0-372.19.1.el8_6
  • 4.18.0-372.26.1.el8_6
  • 4.18.0-372.32.1.el8_6
  • 4.18.0-372.9.1.el8
  • 4.18.0-425.10.1.el8_7
  • 4.18.0-425.13.1.el8_7
  • 4.18.0-425.19.2.el8_7
  • 4.18.0-425.3.1.el8
  • 4.18.0-477.10.1.el8_8
  • 4.18.0-477.13.1.el8_8
  • 4.18.0-477.15.1.el8_8
  • 4.18.0-477.21.1.el8_8
  • 4.18.0-477.27.1.el8_8
  • 4.18.0-513.11.1.el8_9.0.1
  • 4.18.0-513.11.1.el8_9
  • 4.18.0-513.18.1.el8_9
  • 4.18.0-513.24.1.el8_9
  • 4.18.0-513.5.1.el8_9
  • 4.18.0-513.9.1.el8_9
  • 4.18.0-553.16.1.el8_10
  • 4.18.0-553.5.1.el8_10
  • 4.18.0-553.8.1.el8_10
Ubuntu 24.04 Planned