|
@@ -724,16 +724,17 @@ static char *next_string(char *string, unsigned long *secsize)
|
|
|
return string;
|
|
|
}
|
|
|
|
|
|
-static char *get_next_modinfo(void *modinfo, unsigned long modinfo_len,
|
|
|
- const char *tag, char *info)
|
|
|
+static char *get_next_modinfo(struct elf_info *info, const char *tag,
|
|
|
+ char *prev)
|
|
|
{
|
|
|
char *p;
|
|
|
unsigned int taglen = strlen(tag);
|
|
|
- unsigned long size = modinfo_len;
|
|
|
+ char *modinfo = info->modinfo;
|
|
|
+ unsigned long size = info->modinfo_len;
|
|
|
|
|
|
- if (info) {
|
|
|
- size -= info - (char *)modinfo;
|
|
|
- modinfo = next_string(info, &size);
|
|
|
+ if (prev) {
|
|
|
+ size -= prev - modinfo;
|
|
|
+ modinfo = next_string(prev, &size);
|
|
|
}
|
|
|
|
|
|
for (p = modinfo; p; p = next_string(p, &size)) {
|
|
@@ -743,11 +744,10 @@ static char *get_next_modinfo(void *modinfo, unsigned long modinfo_len,
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
-static char *get_modinfo(void *modinfo, unsigned long modinfo_len,
|
|
|
- const char *tag)
|
|
|
+static char *get_modinfo(struct elf_info *info, const char *tag)
|
|
|
|
|
|
{
|
|
|
- return get_next_modinfo(modinfo, modinfo_len, tag, NULL);
|
|
|
+ return get_next_modinfo(info, tag, NULL);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1951,7 +1951,7 @@ static void read_symbols(char *modname)
|
|
|
mod->skip = 1;
|
|
|
}
|
|
|
|
|
|
- license = get_modinfo(info.modinfo, info.modinfo_len, "license");
|
|
|
+ license = get_modinfo(&info, "license");
|
|
|
if (!license && !is_vmlinux(modname))
|
|
|
warn("modpost: missing MODULE_LICENSE() in %s\n"
|
|
|
"see include/linux/module.h for "
|
|
@@ -1963,8 +1963,7 @@ static void read_symbols(char *modname)
|
|
|
mod->gpl_compatible = 0;
|
|
|
break;
|
|
|
}
|
|
|
- license = get_next_modinfo(info.modinfo, info.modinfo_len,
|
|
|
- "license", license);
|
|
|
+ license = get_next_modinfo(&info, "license", license);
|
|
|
}
|
|
|
|
|
|
for (sym = info.symtab_start; sym < info.symtab_stop; sym++) {
|
|
@@ -1977,7 +1976,7 @@ static void read_symbols(char *modname)
|
|
|
(is_vmlinux(modname) && vmlinux_section_warnings))
|
|
|
check_sec_ref(mod, modname, &info);
|
|
|
|
|
|
- version = get_modinfo(info.modinfo, info.modinfo_len, "version");
|
|
|
+ version = get_modinfo(&info, "version");
|
|
|
if (version)
|
|
|
maybe_frob_rcs_version(modname, version, info.modinfo,
|
|
|
version - (char *)info.hdr);
|