Re: kmemleaks on ac3b43283923 ("module: replace module_layout with module_memory")
From: jim.cromie@gmail.com
Date: 2023-03-31 21:43:24
Also in:
lkml
On Fri, Mar 31, 2023 at 1:12 PM Luis Chamberlain [off-list ref] wrote:
On Fri, Mar 31, 2023 at 11:08:23AM -0600, jim.cromie@gmail.com wrote:quoted
:#> uptime 09:45:32 up 1 day, 23:07, 0 users, load average: 0.07, 0.04, 0.01 :#> uname -a Linux (none) 6.3.0-rc1-f2-00001-gac3b43283923 #359 SMP PREEMPT_DYNAMIC Wed Mar 29 09:33:11 MDT 2023 x86_64 x86_64 x86_64 GNU/Linux the leaks I sent previously might be from/on a different commit, heres the relevant one fwiw, the config is unremarkable. it started with CONFIG_BUILD_SALT="5.16.8-200.fc35.x86_64" then `make localmodconfig` to drop anything I dont have hw for then `virtme-configkernel --update` to pick up the 9p,etc config options And some extra DEBUG_* options If you'd like to see runs with others, or see the config itself, please ask.If you wanna see things explode echo 0 > /proc/sys/vm/oom_dump_tasks ./stress-ng --module 20 --module-name xfs This assumes xfs is not already loaded, and has all dependencies already loaded. What would test the load_module() path. If you wanna see if the test is earlier, you can try a module which is already loaded on your system.quoted
:#> uname -a Linux (none) 6.3.0-rc1-f2-00001-gac3b43283923 #359 SMP PREEMPT_DYNAMIC Wed Mar 29 09:33:11 MDT 2023 x86_64 x86_64 x86_64 GNU/Linux :#> ./grok_kmemleak -n not: bless( { 'backtraces' => { '[<0000000058fb276d>] __kmalloc_node_track_caller+0x4a/0x140 [<00000000a2f80203>] memdup_user+0x26/0x90 [<00000000f7cd3624>] strndup_user+0x3f/0x60 [<0000000098fd26c5>] load_module+0x188b/0x20e0Can you do: gdb vmlinux l *(load_module+0x188b) And provide the output?
(gdb) l *(load_module+0x188b)
0xffffffff8122a4bb is in load_module
(/home/jimc/projects/lx/wk-next/kernel/module/main.c:2820).
2815 goto free_modinfo;
2816
2817 flush_module_icache(mod);
2818
2819 /* Now copy in args */
2820 mod->args = strndup_user(uargs, ~0UL >> 1);
2821 if (IS_ERR(mod->args)) {
2822 err = PTR_ERR(mod->args);
2823 goto free_arch_cleanup;
2824 }
quoted
}, 'LeakSet' ) mods: bless( { 'backtraces' => { '[<0000000058fb276d>] __kmalloc_node_track_caller+0x4a/0x140 [<00000000ab7b01fd>] kstrdup+0x32/0x60 [<000000005ed25b98>] kobject_set_name_vargs+0x1c/0x90 [<0000000090fe19ca>] kobject_init_and_add+0x4d/0x90 [<0000000045666935>] mod_sysfs_setup+0xa9/0x6e0Ok that is a specific enough hint. I'll take a review of this sysfs path see what changed that could break.
(gdb) l *(mod_sysfs_setup+0xa9) 0xffffffff8122d2d9 is in mod_sysfs_setup (/home/jimc/projects/lx/wk-next/kernel/module/sysfs.c:361). 356 357 mod->mkobj.mod = mod; 358 359 memset(&mod->mkobj.kobj, 0, sizeof(mod->mkobj.kobj)); 360 mod->mkobj.kobj.kset = module_kset; 361 err = kobject_init_and_add(&mod->mkobj.kobj, &module_ktype, NULL, 362 "%s", mod->name); 363 if (err) 364 mod_kobject_put(mod); 365 (gdb)
quoted
[<00000000d6f7187b>] load_module+0x1de3/0x20e0
(gdb) l *(load_module+0x1de3)
0xffffffff8122aa13 is in load_module
(/home/jimc/projects/lx/wk-next/kernel/module/main.c:2856).
2851 pr_warn("%s: parameters '%s' after `--' ignored\n",
2852 mod->name, after_dashes);
2853 }
2854
2855 /* Link in to sysfs. */
2856 err = mod_sysfs_setup(mod, info, mod->kp, mod->num_kp);
2857 if (err < 0)
2858 goto coming_cleanup;
2859
2860 if (is_livepatch_module(mod)) {
quoted
[<0000000074361279>] __do_sys_finit_module+0x93/0xf0 [<000000004caeb948>] do_syscall_64+0x34/0x80 [<000000009f5d036c>] entry_SYSCALL_64_after_hwframe+0x46/0xb0' => 16 }, Luis