xref: /linux-6.15/kernel/module/debug_kmemleak.c (revision 0c133b1e)
1473c84d1SAaron Tomlin // SPDX-License-Identifier: GPL-2.0-or-later
2473c84d1SAaron Tomlin /*
3473c84d1SAaron Tomlin  * Module kmemleak support
4473c84d1SAaron Tomlin  *
5473c84d1SAaron Tomlin  * Copyright (C) 2009 Catalin Marinas
6473c84d1SAaron Tomlin  */
7473c84d1SAaron Tomlin 
8473c84d1SAaron Tomlin #include <linux/module.h>
9473c84d1SAaron Tomlin #include <linux/kmemleak.h>
10473c84d1SAaron Tomlin #include "internal.h"
11473c84d1SAaron Tomlin 
kmemleak_load_module(const struct module * mod,const struct load_info * info)12473c84d1SAaron Tomlin void kmemleak_load_module(const struct module *mod,
13473c84d1SAaron Tomlin 			  const struct load_info *info)
14473c84d1SAaron Tomlin {
15b319cea8SVincent Donnefort 	/* only scan writable, non-executable sections */
16b319cea8SVincent Donnefort 	for_each_mod_mem_type(type) {
17*0c133b1eSMike Rapoport (Microsoft) 		if (type != MOD_DATA && type != MOD_INIT_DATA &&
18*0c133b1eSMike Rapoport (Microsoft) 		    !mod->mem[type].is_rox)
19b319cea8SVincent Donnefort 			kmemleak_no_scan(mod->mem[type].base);
20473c84d1SAaron Tomlin 	}
21473c84d1SAaron Tomlin }
22