forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
785 B
30 lines
785 B
// 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); |
|
} |
|
}
|
|
|