30 lines · 785 B · C
RawDownload
// SPDX-License-Identifier: GPL-2.0-or-later/* * Module kmemleak support * * Copyright (C) 2009 Catalin Marinas */ #include <linux/module.h>#include <linux/kmemleak.h>#include "internal.h" void kmemleak_load_module(const struct module *mod,			  const struct load_info *info){	unsigned int i; 	/* only scan the sections containing data */	kmemleak_scan_area(mod, sizeof(struct module), GFP_KERNEL); 	for (i = 1; i < info->hdr->e_shnum; i++) {		/* 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,				   info->sechdrs[i].sh_size, GFP_KERNEL);	}}