aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-08-28 04:44:56 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-08-29 01:35:00 -0400
commitea6bff368548d79529421a9dc0710fc5330eb504 (patch)
tree94739882e72fabd5d3822af80a45a8aea3d52c1d
parent4ed86af67e04cb5eb93faba589d102726207865a (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>
-rw-r--r--kernel/module.c7
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);