Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

sched_ext: Fix the memleak for sch->helper objects

This commit use kthread_destroy_worker() to release sch->helper
objects to fix the following kmemleak:

unreferenced object 0xffff888121ec7b00 (size 128):
comm "scx_simple", pid 1197, jiffies 4295884415
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 ad 4e ad de .............N..
ff ff ff ff 00 00 00 00 ff ff ff ff ff ff ff ff ................
backtrace (crc 587b3352):
kmemleak_alloc+0x62/0xa0
__kmalloc_cache_noprof+0x28d/0x3e0
kthread_create_worker_on_node+0xd5/0x1f0
scx_enable.isra.210+0x6c2/0x25b0
bpf_scx_reg+0x12/0x20
bpf_struct_ops_link_create+0x2c3/0x3b0
__sys_bpf+0x3102/0x4b00
__x64_sys_bpf+0x79/0xc0
x64_sys_call+0x15d9/0x1dd0
do_syscall_64+0xf0/0x470
entry_SYSCALL_64_after_hwframe+0x77/0x7f

Fixes: bff3b5aec1b7 ("sched_ext: Move disable machinery into scx_sched")
Cc: stable@vger.kernel.org # v6.16+
Signed-off-by: Zqiang <qiang.zhang@linux.dev>
Signed-off-by: Tejun Heo <tj@kernel.org>

authored by

Zqiang and committed by
Tejun Heo
517a44d1 c2f2b01b

+2 -2
+2 -2
kernel/sched/ext.c
··· 3575 3575 int node; 3576 3576 3577 3577 irq_work_sync(&sch->error_irq_work); 3578 - kthread_stop(sch->helper->task); 3578 + kthread_destroy_worker(sch->helper); 3579 3579 3580 3580 free_percpu(sch->pcpu); 3581 3581 ··· 4786 4786 return sch; 4787 4787 4788 4788 err_stop_helper: 4789 - kthread_stop(sch->helper->task); 4789 + kthread_destroy_worker(sch->helper); 4790 4790 err_free_pcpu: 4791 4791 free_percpu(sch->pcpu); 4792 4792 err_free_gdsqs: