diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-08-28 04:44:56 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-08-29 01:35:00 -0400 |
commit | ea6bff368548d79529421a9dc0710fc5330eb504 (patch) | |
tree | 94739882e72fabd5d3822af80a45a8aea3d52c1d /kernel/module.c | |
parent | 4ed86af67e04cb5eb93faba589d102726207865a (diff) |
modules: Fix build error in the !CONFIG_KALLSYMS case
> James Bottomley (1):
> module: workaround duplicate section names
-tip testing found that this patch breaks the build on x86 if
CONFIG_KALLSYMS is disabled:
kernel/module.c: In function ‘load_module’:
kernel/module.c:2367: error: ‘struct module’ has no member named ‘sect_attrs’
distcc[8269] ERROR: compile kernel/module.c on ph/32 failed
make[1]: *** [kernel/module.o] Error 1
make: *** [kernel] Error 2
make: *** Waiting for unfinished jobs....
Commit 1b364bf misses the fact that section attributes are only
built and dealt with if kallsyms is enabled. The patch below fixes
this.
( note, technically speaking this should depend on CONFIG_SYSFS as
well but this patch is correct too and keeps the #ifdef less
intrusive - in the KALLSYMS && !SYSFS case the code is a NOP. )
Signed-off-by: Ingo Molnar <mingo@elte.hu>
[ Replaced patch with a slightly cleaner variation by James Bottomley ]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/module.c')
-rw-r--r-- | kernel/module.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/module.c b/kernel/module.c index eccb561dd8a3..2d537186191f 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
@@ -1274,6 +1274,10 @@ static void add_notes_attrs(struct module *mod, unsigned int nsect, | |||
1274 | struct module_notes_attrs *notes_attrs; | 1274 | struct module_notes_attrs *notes_attrs; |
1275 | struct bin_attribute *nattr; | 1275 | struct bin_attribute *nattr; |
1276 | 1276 | ||
1277 | /* failed to create section attributes, so can't create notes */ | ||
1278 | if (!mod->sect_attrs) | ||
1279 | return; | ||
1280 | |||
1277 | /* Count notes sections and allocate structures. */ | 1281 | /* Count notes sections and allocate structures. */ |
1278 | notes = 0; | 1282 | notes = 0; |
1279 | for (i = 0; i < nsect; i++) | 1283 | for (i = 0; i < nsect; i++) |
@@ -2355,8 +2359,7 @@ static noinline struct module *load_module(void __user *umod, | |||
2355 | if (err < 0) | 2359 | if (err < 0) |
2356 | goto unlink; | 2360 | goto unlink; |
2357 | add_sect_attrs(mod, hdr->e_shnum, secstrings, sechdrs); | 2361 | add_sect_attrs(mod, hdr->e_shnum, secstrings, sechdrs); |
2358 | if (mod->sect_attrs) | 2362 | add_notes_attrs(mod, hdr->e_shnum, secstrings, sechdrs); |
2359 | add_notes_attrs(mod, hdr->e_shnum, secstrings, sechdrs); | ||
2360 | 2363 | ||
2361 | /* Get rid of temporary copy */ | 2364 | /* Get rid of temporary copy */ |
2362 | vfree(hdr); | 2365 | vfree(hdr); |