Commit 94d6cb68 authored by Masahiro Yamada's avatar Masahiro Yamada
Browse files

modpost: pass struct module pointer to check_section_mismatch()



The next commit will use it.

Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
parent 92e2921e
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -1211,7 +1211,7 @@ static void default_mismatch_handler(const char *modname, struct elf_info *elf,
	}
}

static void check_section_mismatch(const char *modname, struct elf_info *elf,
static void check_section_mismatch(struct module *mod, struct elf_info *elf,
				   Elf_Sym *sym,
				   unsigned int fsecndx, const char *fromsec,
				   Elf_Addr faddr, Elf_Addr taddr)
@@ -1222,7 +1222,7 @@ static void check_section_mismatch(const char *modname, struct elf_info *elf,
	if (!mismatch)
		return;

	default_mismatch_handler(modname, elf, mismatch, sym,
	default_mismatch_handler(mod->name, elf, mismatch, sym,
				 fsecndx, fromsec, faddr,
				 tosec, taddr);
}
@@ -1406,7 +1406,7 @@ static int addend_mips_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
#define R_LARCH_SUB32		55
#endif

static void section_rela(const char *modname, struct elf_info *elf,
static void section_rela(struct module *mod, struct elf_info *elf,
			 Elf_Shdr *sechdr)
{
	Elf_Rela *rela;
@@ -1452,12 +1452,12 @@ static void section_rela(const char *modname, struct elf_info *elf,
			break;
		}

		check_section_mismatch(modname, elf, elf->symtab_start + r_sym,
		check_section_mismatch(mod, elf, elf->symtab_start + r_sym,
				       fsecndx, fromsec, r.r_offset, r.r_addend);
	}
}

static void section_rel(const char *modname, struct elf_info *elf,
static void section_rel(struct module *mod, struct elf_info *elf,
			Elf_Shdr *sechdr)
{
	Elf_Rel *rel;
@@ -1507,7 +1507,7 @@ static void section_rel(const char *modname, struct elf_info *elf,
			fatal("Please add code to calculate addend for this architecture\n");
		}

		check_section_mismatch(modname, elf, elf->symtab_start + r_sym,
		check_section_mismatch(mod, elf, elf->symtab_start + r_sym,
				       fsecndx, fromsec, r.r_offset, r.r_addend);
	}
}
@@ -1524,19 +1524,19 @@ static void section_rel(const char *modname, struct elf_info *elf,
 * to find all references to a section that reference a section that will
 * be discarded and warns about it.
 **/
static void check_sec_ref(const char *modname, struct elf_info *elf)
static void check_sec_ref(struct module *mod, struct elf_info *elf)
{
	int i;
	Elf_Shdr *sechdrs = elf->sechdrs;

	/* Walk through all sections */
	for (i = 0; i < elf->num_sections; i++) {
		check_section(modname, elf, &elf->sechdrs[i]);
		check_section(mod->name, elf, &elf->sechdrs[i]);
		/* We want to process only relocation sections and not .init */
		if (sechdrs[i].sh_type == SHT_RELA)
			section_rela(modname, elf, &elf->sechdrs[i]);
			section_rela(mod, elf, &elf->sechdrs[i]);
		else if (sechdrs[i].sh_type == SHT_REL)
			section_rel(modname, elf, &elf->sechdrs[i]);
			section_rel(mod, elf, &elf->sechdrs[i]);
	}
}

@@ -1707,7 +1707,7 @@ static void read_symbols(const char *modname)
					     sym_get_data(&info, sym));
	}

	check_sec_ref(modname, &info);
	check_sec_ref(mod, &info);

	if (!mod->is_vmlinux) {
		version = get_modinfo(&info, "version");