Commit eb3479bc authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'kbuild-fixes-v6.7' of...

Merge tag 'kbuild-fixes-v6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull Kbuild fixes from Masahiro Yamada:

 - Fix section mismatch warning messages for riscv and loongarch

 - Remove CONFIG_IA64 left-over from linux/export-internal.h

 - Fix the location of the quotes for UIMAGE_NAME

 - Fix a memory leak bug in Kconfig

* tag 'kbuild-fixes-v6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
  kconfig: fix memory leak from range properties
  kbuild: Move the single quotes for image name
  linux/export: clean up the IA-64 KSYM_FUNC macro
  modpost: fix section mismatch message for RELA
parents 46a29dd1 ae1eff03
...@@ -50,9 +50,7 @@ ...@@ -50,9 +50,7 @@
" .previous" "\n" \ " .previous" "\n" \
) )
#ifdef CONFIG_IA64 #if defined(CONFIG_PARISC) && defined(CONFIG_64BIT)
#define KSYM_FUNC(name) @fptr(name)
#elif defined(CONFIG_PARISC) && defined(CONFIG_64BIT)
#define KSYM_FUNC(name) P%name #define KSYM_FUNC(name) P%name
#else #else
#define KSYM_FUNC(name) name #define KSYM_FUNC(name) name
......
...@@ -487,14 +487,14 @@ UIMAGE_OPTS-y ?= ...@@ -487,14 +487,14 @@ UIMAGE_OPTS-y ?=
UIMAGE_TYPE ?= kernel UIMAGE_TYPE ?= kernel
UIMAGE_LOADADDR ?= arch_must_set_this UIMAGE_LOADADDR ?= arch_must_set_this
UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR) UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR)
UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE)' UIMAGE_NAME ?= Linux-$(KERNELRELEASE)
quiet_cmd_uimage = UIMAGE $@ quiet_cmd_uimage = UIMAGE $@
cmd_uimage = $(BASH) $(MKIMAGE) -A $(UIMAGE_ARCH) -O linux \ cmd_uimage = $(BASH) $(MKIMAGE) -A $(UIMAGE_ARCH) -O linux \
-C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \ -C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \
-T $(UIMAGE_TYPE) \ -T $(UIMAGE_TYPE) \
-a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \ -a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \
-n $(UIMAGE_NAME) -d $< $@ -n '$(UIMAGE_NAME)' -d $< $@
# XZ # XZ
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
......
...@@ -122,9 +122,9 @@ static long long sym_get_range_val(struct symbol *sym, int base) ...@@ -122,9 +122,9 @@ static long long sym_get_range_val(struct symbol *sym, int base)
static void sym_validate_range(struct symbol *sym) static void sym_validate_range(struct symbol *sym)
{ {
struct property *prop; struct property *prop;
struct symbol *range_sym;
int base; int base;
long long val, val2; long long val, val2;
char str[64];
switch (sym->type) { switch (sym->type) {
case S_INT: case S_INT:
...@@ -140,17 +140,15 @@ static void sym_validate_range(struct symbol *sym) ...@@ -140,17 +140,15 @@ static void sym_validate_range(struct symbol *sym)
if (!prop) if (!prop)
return; return;
val = strtoll(sym->curr.val, NULL, base); val = strtoll(sym->curr.val, NULL, base);
val2 = sym_get_range_val(prop->expr->left.sym, base); range_sym = prop->expr->left.sym;
val2 = sym_get_range_val(range_sym, base);
if (val >= val2) { if (val >= val2) {
val2 = sym_get_range_val(prop->expr->right.sym, base); range_sym = prop->expr->right.sym;
val2 = sym_get_range_val(range_sym, base);
if (val <= val2) if (val <= val2)
return; return;
} }
if (sym->type == S_INT) sym->curr.val = range_sym->curr.val;
sprintf(str, "%lld", val2);
else
sprintf(str, "0x%llx", val2);
sym->curr.val = xstrdup(str);
} }
static void sym_set_changed(struct symbol *sym) static void sym_set_changed(struct symbol *sym)
......
...@@ -1383,13 +1383,15 @@ static void section_rela(struct module *mod, struct elf_info *elf, ...@@ -1383,13 +1383,15 @@ static void section_rela(struct module *mod, struct elf_info *elf,
const Elf_Rela *rela; const Elf_Rela *rela;
for (rela = start; rela < stop; rela++) { for (rela = start; rela < stop; rela++) {
Elf_Sym *tsym;
Elf_Addr taddr, r_offset; Elf_Addr taddr, r_offset;
unsigned int r_type, r_sym; unsigned int r_type, r_sym;
r_offset = TO_NATIVE(rela->r_offset); r_offset = TO_NATIVE(rela->r_offset);
get_rel_type_and_sym(elf, rela->r_info, &r_type, &r_sym); get_rel_type_and_sym(elf, rela->r_info, &r_type, &r_sym);
taddr = TO_NATIVE(rela->r_addend); tsym = elf->symtab_start + r_sym;
taddr = tsym->st_value + TO_NATIVE(rela->r_addend);
switch (elf->hdr->e_machine) { switch (elf->hdr->e_machine) {
case EM_RISCV: case EM_RISCV:
...@@ -1404,7 +1406,7 @@ static void section_rela(struct module *mod, struct elf_info *elf, ...@@ -1404,7 +1406,7 @@ static void section_rela(struct module *mod, struct elf_info *elf,
break; break;
} }
check_section_mismatch(mod, elf, elf->symtab_start + r_sym, check_section_mismatch(mod, elf, tsym,
fsecndx, fromsec, r_offset, taddr); fsecndx, fromsec, r_offset, taddr);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment