diff --git a/arch/x86/kernel/livepatch.c b/arch/x86/kernel/livepatch.c index e9d252d873aa..0bbe62e645ad 100644 --- a/arch/x86/kernel/livepatch.c +++ b/arch/x86/kernel/livepatch.c @@ -36,12 +36,12 @@ void arch_klp_init_object_loaded(struct klp_patch *patch, objname = obj->name ? obj->name : "vmlinux"; /* See livepatch core code for BUILD_BUG_ON() explanation */ - BUILD_BUG_ON(MODULE_NAME_LEN < 56 || KSYM_NAME_LEN != 128); + BUILD_BUG_ON(MODULE_NAME_LEN < 56 || KSYM_NAME_LEN != 192); for (s = info->sechdrs; s < info->sechdrs + info->hdr.e_shnum; s++) { /* Apply per-object .klp.arch sections */ cnt = sscanf(info->secstrings + s->sh_name, - ".klp.arch.%55[^.].%127s", + ".klp.arch.%55[^.].%191s", sec_objname, secname); if (cnt != 2) continue; diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h index 6883e197acb9..a5f5ce26a15c 100644 --- a/include/linux/kallsyms.h +++ b/include/linux/kallsyms.h @@ -9,7 +9,7 @@ #include #include -#define KSYM_NAME_LEN 128 +#define KSYM_NAME_LEN 192 #define KSYM_SYMBOL_LEN (sizeof("%s+%#lx/%#lx [%s]") + (KSYM_NAME_LEN - 1) + \ 2*(BITS_PER_LONG*3/10) + (MODULE_NAME_LEN - 1) + 1) diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c index af4643873e71..046ed2e52b40 100644 --- a/kernel/livepatch/core.c +++ b/kernel/livepatch/core.c @@ -226,7 +226,7 @@ static int klp_resolve_symbols(Elf_Shdr *relasec, struct module *pmod) * we use the smallest/strictest upper bound possible (56, based on * the current definition of MODULE_NAME_LEN) to prevent overflows. */ - BUILD_BUG_ON(MODULE_NAME_LEN < 56 || KSYM_NAME_LEN != 128); + BUILD_BUG_ON(MODULE_NAME_LEN < 56 || KSYM_NAME_LEN != 192); relas = (Elf_Rela *) relasec->sh_addr; /* For each rela in this klp relocation section */ @@ -240,7 +240,7 @@ static int klp_resolve_symbols(Elf_Shdr *relasec, struct module *pmod) /* Format: .klp.sym.objname.symname,sympos */ cnt = sscanf(strtab + sym->st_name, - ".klp.sym.%55[^.].%127[^,],%lu", + ".klp.sym.%55[^.].%191[^,],%lu", objname, symname, &sympos); if (cnt != 3) { pr_err("symbol %s has an incorrectly formatted name", diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 6402b0d36291..d9fabb3e7e6a 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -28,7 +28,7 @@ #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0])) #endif -#define KSYM_NAME_LEN 128 +#define KSYM_NAME_LEN 192 struct sym_entry { unsigned long long addr;