2009-09-04 03:48:46

by wu zhangjin

[permalink] [raw]
Subject: [PATCH] fix "no member named 'sect_attrs' of strcut module"

From: Wu Zhangjin <[email protected]>

The commit(1b364bf438cf337a3818aee77d68c0713f3e1fc4, "module: workaround
duplicate section names") introduced a condition to avoid null pointer
reference:

- add_notes_attrs(mod, hdr->e_shnum, secstrings, sechdrs);
+ if (mod->sect_attrs)
+ add_notes_attrs(mod, hdr->e_shnum, secstrings, sechdrs);

but sect_attrs is only defined when CONFIG_KALLSYMS enabled, so this
patch is need to fix the following error:

error: 'struct module' has no member named 'sect_attrs'

Signed-off-by: Wu Zhangjin <[email protected]>
---
kernel/module.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/kernel/module.c b/kernel/module.c
index eccb561..b4016d1 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2355,8 +2355,10 @@ static noinline struct module *load_module(void __user *umod,
if (err < 0)
goto unlink;
add_sect_attrs(mod, hdr->e_shnum, secstrings, sechdrs);
+#ifdef CONFIG_KALLSYMS
if (mod->sect_attrs)
add_notes_attrs(mod, hdr->e_shnum, secstrings, sechdrs);
+#endif

/* Get rid of temporary copy */
vfree(hdr);
--
1.6.2.1


2009-09-04 05:04:47

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] fix "no member named 'sect_attrs' of strcut module"


* Wu Zhangjin <[email protected]> wrote:

> From: Wu Zhangjin <[email protected]>
>
> The commit(1b364bf438cf337a3818aee77d68c0713f3e1fc4, "module: workaround
> duplicate section names") introduced a condition to avoid null pointer
> reference:
>
> - add_notes_attrs(mod, hdr->e_shnum, secstrings, sechdrs);
> + if (mod->sect_attrs)
> + add_notes_attrs(mod, hdr->e_shnum, secstrings, sechdrs);
>
> but sect_attrs is only defined when CONFIG_KALLSYMS enabled, so this
> patch is need to fix the following error:
>
> error: 'struct module' has no member named 'sect_attrs'
>
> Signed-off-by: Wu Zhangjin <[email protected]>

This has been fixed already, see this upstream fix:

ea6bff3: modules: Fix build error in the !CONFIG_KALLSYMS case

Ingo