diff options
Diffstat (limited to 'kernel/module.c')
| -rw-r--r-- | kernel/module.c | 8 | 
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/module.c b/kernel/module.c index b049939177f..06f496a5d18 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -2431,10 +2431,10 @@ static void kmemleak_load_module(const struct module *mod,  	kmemleak_scan_area(mod, sizeof(struct module), GFP_KERNEL);  	for (i = 1; i < info->hdr->e_shnum; i++) { -		const char *name = info->secstrings + info->sechdrs[i].sh_name; -		if (!(info->sechdrs[i].sh_flags & SHF_ALLOC)) -			continue; -		if (!strstarts(name, ".data") && !strstarts(name, ".bss")) +		/* Scan all writable sections that's not executable */ +		if (!(info->sechdrs[i].sh_flags & SHF_ALLOC) || +		    !(info->sechdrs[i].sh_flags & SHF_WRITE) || +		    (info->sechdrs[i].sh_flags & SHF_EXECINSTR))  			continue;  		kmemleak_scan_area((void *)info->sechdrs[i].sh_addr,  |