Re: [PATCH] modpost: Fix modpost's license checking V3

From: Frank Rowand
Date: Mon Mar 26 2012 - 21:59:12 EST


On 03/23/12 19:04, Frank Rowand wrote:
> On 07/13/11 23:51, Alessio Igor Bogani wrote:
>> The commit f02e8a6 sorts symbols placing each of them in its own elf section.
>> The sorting and merging into the canonical sections are done by the linker.
>> Unfortunately modpost to generate Module.symvers file parses vmlinux
>
> Yet another unfortunately: modpost parses vmlinux.o instead of vmlinux (vmlinux
> does not yet exist at this point of the build). vmlinux.o also does not have
> the many sections sorted and merged into the canonical sections. As a result,
> the Module.symvers created my modpost incorrectly reports the license of all
> exports as "(unknown)".
>
> Can you fix this also please?

The attached patch modifies your patch to also use export_from_secname()
for vmlinux and vmlinux.o.

This is a rather blind shot at fixing the problem, so please review
carefully. After applying the patch, Module.symvers reports the license
correctly for exports from vmlinux.o.

>
>
>> (already linked) 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.
>>
>> Thanks to Arnaud Lacombe <lacombar@xxxxxxxxx> and Anders Kaseorg
>> <andersk@xxxxxxxxxxx> for providing useful suggestions about code.
>>
>> This work was supported by a hardware donation from the CE Linux Forum.
>>
>> Reported-by: Jan Beulich <jbeulich@xxxxxxxxxx>
>> Signed-off-by: Alessio Igor Bogani <abogani@xxxxxxxxxx>
>> ---
>> scripts/mod/modpost.c | 29 ++++++++++++++++++++++++++++-
>> 1 files changed, 28 insertions(+), 1 deletions(-)
>
> < snip >
>
> -Frank Rowand

Signed-off-by: Frank Rowand <frank.rowand@xxxxxxxxxxx>
---
scripts/mod/modpost.c | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

Index: b/scripts/mod/modpost.c
===================================================================
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -589,7 +589,7 @@ static void handle_modversions(struct mo
unsigned int crc;
enum export export;

- if (!is_vmlinux(mod->name) && strncmp(symname, "__ksymtab", 9) == 0)
+ if (strncmp(symname, "__ksymtab", 9) == 0)
export = export_from_secname(info, get_secindex(info, sym));
else
export = export_from_sec(info, get_secindex(info, sym));

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/