diff options
| author | Jessica Yu <jeyu@kernel.org> | 2018-06-29 10:37:08 -0400 |
|---|---|---|
| committer | Jessica Yu <jeyu@kernel.org> | 2018-07-02 05:36:17 -0400 |
| commit | f314dfea16a085a58d2ff227ea9fa9e490ee5d18 (patch) | |
| tree | c203005916d88e491f9cf333929ca9830a84277d /kernel/module.c | |
| parent | 996302c5e85650722f1e5aeaeaaac12f9f362bf8 (diff) | |
modsign: log module name in the event of an error
Now that we have the load_info struct all initialized (including
info->name, which contains the name of the module) before
module_sig_check(), make the load_info struct and hence module name
available to mod_verify_sig() so that we can log the module name in the
event of an error.
Signed-off-by: Jessica Yu <jeyu@kernel.org>
Diffstat (limited to 'kernel/module.c')
| -rw-r--r-- | kernel/module.c | 22 |
1 files changed, 1 insertions, 21 deletions
diff --git a/kernel/module.c b/kernel/module.c index ba45a84e4287..8a45986fd728 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
| @@ -307,26 +307,6 @@ int unregister_module_notifier(struct notifier_block *nb) | |||
| 307 | } | 307 | } |
| 308 | EXPORT_SYMBOL(unregister_module_notifier); | 308 | EXPORT_SYMBOL(unregister_module_notifier); |
| 309 | 309 | ||
| 310 | struct load_info { | ||
| 311 | const char *name; | ||
| 312 | /* pointer to module in temporary copy, freed at end of load_module() */ | ||
| 313 | struct module *mod; | ||
| 314 | Elf_Ehdr *hdr; | ||
| 315 | unsigned long len; | ||
| 316 | Elf_Shdr *sechdrs; | ||
| 317 | char *secstrings, *strtab; | ||
| 318 | unsigned long symoffs, stroffs; | ||
| 319 | struct _ddebug *debug; | ||
| 320 | unsigned int num_debug; | ||
| 321 | bool sig_ok; | ||
| 322 | #ifdef CONFIG_KALLSYMS | ||
| 323 | unsigned long mod_kallsyms_init_off; | ||
| 324 | #endif | ||
| 325 | struct { | ||
| 326 | unsigned int sym, str, mod, vers, info, pcpu; | ||
| 327 | } index; | ||
| 328 | }; | ||
| 329 | |||
| 330 | /* | 310 | /* |
| 331 | * We require a truly strong try_module_get(): 0 means success. | 311 | * We require a truly strong try_module_get(): 0 means success. |
| 332 | * Otherwise an error is returned due to ongoing or failed | 312 | * Otherwise an error is returned due to ongoing or failed |
| @@ -2778,7 +2758,7 @@ static int module_sig_check(struct load_info *info, int flags) | |||
| 2778 | memcmp(mod + info->len - markerlen, MODULE_SIG_STRING, markerlen) == 0) { | 2758 | memcmp(mod + info->len - markerlen, MODULE_SIG_STRING, markerlen) == 0) { |
| 2779 | /* We truncate the module to discard the signature */ | 2759 | /* We truncate the module to discard the signature */ |
| 2780 | info->len -= markerlen; | 2760 | info->len -= markerlen; |
| 2781 | err = mod_verify_sig(mod, &info->len); | 2761 | err = mod_verify_sig(mod, info); |
| 2782 | } | 2762 | } |
| 2783 | 2763 | ||
| 2784 | if (!err) { | 2764 | if (!err) { |
