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.

Merge tag 'kmemleak-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64

Pull kmemleak patches from Catalin Marinas:
"Kmemleak now scans all the writable and non-executable module sections
to avoid false positives (previously it was only scanning specific
sections and missing .ref.data)."

* tag 'kmemleak-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64:
kmemleak: No need for scanning specific module sections
kmemleak: Scan all allocated, writeable and not executable module sections

+4 -17
+4 -17
kernel/module.c
··· 2431 2431 kmemleak_scan_area(mod, sizeof(struct module), GFP_KERNEL); 2432 2432 2433 2433 for (i = 1; i < info->hdr->e_shnum; i++) { 2434 - const char *name = info->secstrings + info->sechdrs[i].sh_name; 2435 - if (!(info->sechdrs[i].sh_flags & SHF_ALLOC)) 2436 - continue; 2437 - if (!strstarts(name, ".data") && !strstarts(name, ".bss")) 2434 + /* Scan all writable sections that's not executable */ 2435 + if (!(info->sechdrs[i].sh_flags & SHF_ALLOC) || 2436 + !(info->sechdrs[i].sh_flags & SHF_WRITE) || 2437 + (info->sechdrs[i].sh_flags & SHF_EXECINSTR)) 2438 2438 continue; 2439 2439 2440 2440 kmemleak_scan_area((void *)info->sechdrs[i].sh_addr, ··· 2769 2769 mod->trace_events = section_objs(info, "_ftrace_events", 2770 2770 sizeof(*mod->trace_events), 2771 2771 &mod->num_trace_events); 2772 - /* 2773 - * This section contains pointers to allocated objects in the trace 2774 - * code and not scanning it leads to false positives. 2775 - */ 2776 - kmemleak_scan_area(mod->trace_events, sizeof(*mod->trace_events) * 2777 - mod->num_trace_events, GFP_KERNEL); 2778 2772 #endif 2779 2773 #ifdef CONFIG_TRACING 2780 2774 mod->trace_bprintk_fmt_start = section_objs(info, "__trace_printk_fmt", 2781 2775 sizeof(*mod->trace_bprintk_fmt_start), 2782 2776 &mod->num_trace_bprintk_fmt); 2783 - /* 2784 - * This section contains pointers to allocated objects in the trace 2785 - * code and not scanning it leads to false positives. 2786 - */ 2787 - kmemleak_scan_area(mod->trace_bprintk_fmt_start, 2788 - sizeof(*mod->trace_bprintk_fmt_start) * 2789 - mod->num_trace_bprintk_fmt, GFP_KERNEL); 2790 2777 #endif 2791 2778 #ifdef CONFIG_FTRACE_MCOUNT_RECORD 2792 2779 /* sechdrs[0].sh_size is always zero */