diff options
| -rw-r--r-- | kernel/livepatch/core.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c index 47402b8b3990..b9628e43c78f 100644 --- a/kernel/livepatch/core.c +++ b/kernel/livepatch/core.c | |||
| @@ -151,7 +151,10 @@ static int klp_find_object_symbol(const char *objname, const char *name, | |||
| 151 | }; | 151 | }; |
| 152 | 152 | ||
| 153 | mutex_lock(&module_mutex); | 153 | mutex_lock(&module_mutex); |
| 154 | kallsyms_on_each_symbol(klp_find_callback, &args); | 154 | if (objname) |
| 155 | module_kallsyms_on_each_symbol(klp_find_callback, &args); | ||
| 156 | else | ||
| 157 | kallsyms_on_each_symbol(klp_find_callback, &args); | ||
| 155 | mutex_unlock(&module_mutex); | 158 | mutex_unlock(&module_mutex); |
| 156 | 159 | ||
| 157 | /* | 160 | /* |
| @@ -202,7 +205,7 @@ static int klp_resolve_symbols(Elf_Shdr *relasec, struct module *pmod) | |||
| 202 | for (i = 0; i < relasec->sh_size / sizeof(Elf_Rela); i++) { | 205 | for (i = 0; i < relasec->sh_size / sizeof(Elf_Rela); i++) { |
| 203 | sym = pmod->core_kallsyms.symtab + ELF_R_SYM(relas[i].r_info); | 206 | sym = pmod->core_kallsyms.symtab + ELF_R_SYM(relas[i].r_info); |
| 204 | if (sym->st_shndx != SHN_LIVEPATCH) { | 207 | if (sym->st_shndx != SHN_LIVEPATCH) { |
| 205 | pr_err("symbol %s is not marked as a livepatch symbol", | 208 | pr_err("symbol %s is not marked as a livepatch symbol\n", |
| 206 | strtab + sym->st_name); | 209 | strtab + sym->st_name); |
| 207 | return -EINVAL; | 210 | return -EINVAL; |
| 208 | } | 211 | } |
| @@ -212,7 +215,7 @@ static int klp_resolve_symbols(Elf_Shdr *relasec, struct module *pmod) | |||
| 212 | ".klp.sym.%55[^.].%127[^,],%lu", | 215 | ".klp.sym.%55[^.].%127[^,],%lu", |
| 213 | objname, symname, &sympos); | 216 | objname, symname, &sympos); |
| 214 | if (cnt != 3) { | 217 | if (cnt != 3) { |
| 215 | pr_err("symbol %s has an incorrectly formatted name", | 218 | pr_err("symbol %s has an incorrectly formatted name\n", |
| 216 | strtab + sym->st_name); | 219 | strtab + sym->st_name); |
| 217 | return -EINVAL; | 220 | return -EINVAL; |
| 218 | } | 221 | } |
| @@ -257,7 +260,7 @@ static int klp_write_object_relocations(struct module *pmod, | |||
| 257 | */ | 260 | */ |
| 258 | cnt = sscanf(secname, ".klp.rela.%55[^.]", sec_objname); | 261 | cnt = sscanf(secname, ".klp.rela.%55[^.]", sec_objname); |
| 259 | if (cnt != 1) { | 262 | if (cnt != 1) { |
| 260 | pr_err("section %s has an incorrectly formatted name", | 263 | pr_err("section %s has an incorrectly formatted name\n", |
| 261 | secname); | 264 | secname); |
| 262 | ret = -EINVAL; | 265 | ret = -EINVAL; |
| 263 | break; | 266 | break; |
| @@ -805,7 +808,7 @@ int klp_register_patch(struct klp_patch *patch) | |||
| 805 | return -EINVAL; | 808 | return -EINVAL; |
| 806 | 809 | ||
| 807 | if (!is_livepatch_module(patch->mod)) { | 810 | if (!is_livepatch_module(patch->mod)) { |
| 808 | pr_err("module %s is not marked as a livepatch module", | 811 | pr_err("module %s is not marked as a livepatch module\n", |
| 809 | patch->mod->name); | 812 | patch->mod->name); |
| 810 | return -EINVAL; | 813 | return -EINVAL; |
| 811 | } | 814 | } |
