mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-07-27 06:18:13 +00:00
1af87d9126
3.2.16 is the final release in the 3.2-stable series by Greg KH. Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
75 lines
2.6 KiB
Diff
75 lines
2.6 KiB
Diff
From ee1916e58deb327a1bbaba6fc344e593fc54764f Mon Sep 17 00:00:00 2001
|
|
From: Frank Rowand <frank.rowand@am.sony.com>
|
|
Date: Mon, 9 Apr 2012 17:59:03 -0700
|
|
Subject: [PATCH 45/60] modpost: Fix modpost license checking of vmlinux.o
|
|
|
|
commit 258f742635360175564e9470eb060ff4d4b984e7 upstream.
|
|
|
|
Commit f02e8a6596b7 ("module: Sort exported symbols") sorts symbols
|
|
placing each of them in its own elf section. This sorting and merging
|
|
into the canonical sections are done by the linker.
|
|
|
|
Unfortunately modpost to generate Module.symvers file parses vmlinux.o
|
|
(which is not linked yet) and all modules object files (which aren't
|
|
linked yet). These aren't sanitized by the linker yet. That breaks
|
|
modpost that can't detect license properly for modules.
|
|
|
|
This patch makes modpost aware of the new exported symbols structure.
|
|
|
|
[ This above is a slightly corrected version of the explanation of the
|
|
problem, copied from commit 62a2635610db ("modpost: Fix modpost's
|
|
license checking V3"). That commit fixed the problem for module
|
|
object files, but not for vmlinux.o. This patch fixes modpost for
|
|
vmlinux.o. ]
|
|
|
|
Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
|
|
Signed-off-by: Alessio Igor Bogani <abogani@kernel.org>
|
|
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
scripts/mod/modpost.c | 7 +++++--
|
|
scripts/mod/modpost.h | 1 +
|
|
2 files changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
|
|
index 159b4cc..619228d 100644
|
|
--- a/scripts/mod/modpost.c
|
|
+++ b/scripts/mod/modpost.c
|
|
@@ -132,8 +132,10 @@ static struct module *new_module(char *modname)
|
|
/* strip trailing .o */
|
|
s = strrchr(p, '.');
|
|
if (s != NULL)
|
|
- if (strcmp(s, ".o") == 0)
|
|
+ if (strcmp(s, ".o") == 0) {
|
|
*s = '\0';
|
|
+ mod->is_dot_o = 1;
|
|
+ }
|
|
|
|
/* add to list */
|
|
mod->name = p;
|
|
@@ -587,7 +589,8 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
|
|
unsigned int crc;
|
|
enum export export;
|
|
|
|
- if (!is_vmlinux(mod->name) && strncmp(symname, "__ksymtab", 9) == 0)
|
|
+ if ((!is_vmlinux(mod->name) || mod->is_dot_o) &&
|
|
+ strncmp(symname, "__ksymtab", 9) == 0)
|
|
export = export_from_secname(info, get_secindex(info, sym));
|
|
else
|
|
export = export_from_sec(info, get_secindex(info, sym));
|
|
diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
|
|
index 2031119..51207e4 100644
|
|
--- a/scripts/mod/modpost.h
|
|
+++ b/scripts/mod/modpost.h
|
|
@@ -113,6 +113,7 @@ struct module {
|
|
int has_cleanup;
|
|
struct buffer dev_table_buf;
|
|
char srcversion[25];
|
|
+ int is_dot_o;
|
|
};
|
|
|
|
struct elf_info {
|
|
--
|
|
1.7.9.5
|
|
|