[PATCH] UBUNTU: SAUCE: disable_nx should not be in __cpuinitdata section for X86_32

Tim Gardner tim.gardner at canonical.com
Thu Mar 29 15:42:42 UTC 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

On 03/29/2012 09:21 AM, Stefan Bader wrote:
> On 29.03.2012 17:09, Tim Gardner wrote:
>> On 03/29/2012 08:50 AM, Stefan Bader wrote:
>>> On 29.03.2012 15:27, Tim Gardner wrote:
>>>> BugLink: http://bugs.launchpad.net/bugs/968233
>>>> 
>>>> I noticed a section mismatch warning while building
>>>> 3.2.0-20.33 for X86_32.
>>>> 
>>>> AR      arch/x86/lib/lib.a LD      vmlinux.o MODPOST
>>>> vmlinux.o WARNING: vmlinux.o(.text+0x187833): Section
>>>> mismatch in reference from the function load_elf_binary() to
>>>> the variable .cpuinit.data:disable_nx The function
>>>> load_elf_binary() references the variable __cpuinitdata
>>>> disable_nx. This is often because load_elf_binary lacks a
>>>> __cpuinitdata annotation or the annotation of disable_nx is
>>>> wrong.
>>>> 
>>>> load_elf_binary() is definitely called after initialization.
>>>> 
>>>> This code was added by 'UBUNTU: ubuntu: nx-emu - i386: NX 
>>>> emulation', so this is not an upstream problem.
>>>> 
>>>> Reported-by: Tetsuo Handa <from-ubuntu at I-love.SAKURA.ne.jp> 
>>>> Signed-off-by: Tim Gardner <tim.gardner at canonical.com> --- 
>>>> arch/x86/mm/setup_nx.c |    4 ++++ 1 files changed, 4 
>>>> insertions(+), 0 deletions(-)
>>>> 
>>>> diff --git a/arch/x86/mm/setup_nx.c b/arch/x86/mm/setup_nx.c
>>>>  index 90c9eff3..89fd946 100644 --- a/arch/x86/mm/setup_nx.c
>>>> +++ b/arch/x86/mm/setup_nx.c @@ -6,7 +6,11 @@ #include 
>>>> <asm/pgtable.h> #include <asm/proto.h>
>>>> 
>>>> +#ifdef CONFIG_X86_32 +int disable_nx; /* referenced by 
>>>> load_elf_binary() */ +#else int disable_nx __cpuinitdata; 
>>>> +#endif
>>>> 
>>>> /* * noexec = on|off
>> 
>>> Hm, maybe I just understand the annotation incorrectly. But I 
>>> thought it marks functions and variables as only used during
>>> init. Which is wrong on 32bit, but why is it then still
>>> considered needed on 64bit? Probably not even needed if this is
>>> solely used for nx emulation...
>> 
>> 
>> The code in load_elf_binary() that references disable_nx is
>> "#ifdef CONFIG_X86_32", so its unused in 64 bit.
>> 
>> rtg
> 
> My question probably should have been: is an #else required? Which
> I can answer myself: yes. So the remaining question just is: would
> it hurt to just make that a normal (not __cpuinitdata) variable in
> all cases? Beside of "wasting" one int.
> 
> -Stefan
> 

It probably wouldn't make any difference. I just chose not to alter
the amd64 behavior.

rtg
- -- 
Tim Gardner tim.gardner at canonical.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBCgAGBQJPdILyAAoJED12yEX6FEfKybEP+weTmqOuhb8SAE5c8sK9otYh
iYy/vzCI/UkbHT4+QmlPiiD6K5aoyLcuNWGjp6xzDHmvrBdVKY87SzqoHozqLXol
cJv8svb6e3cCJ+thzvt1F1ZBMj4c6fTJ7U098M+65zDwpcoau1SSXzhcimnR4o1/
BAi9KqsJzWkF6dQokv6Llw7JIs6Yg4X8jUkmCilzugWe4hdIJdte711qLvyHd7J9
VTgxuG9LQ+BFygkIosIhK8y0QLihyuAVkWq0d+0tNh2k4bEpAF3i2G8pGNAS11zx
/6AoZhjnLiLmZMqL3Ug6/lTfmUfcU5B4yKJij98tQIwLMCZ9lcrZwKDz+PNPn1kK
ReIENg0IqJI0eMBryyjAQYHuoVkcpwuPWQmp7d3dTojjkDL85tfAzxUsPjKsTlQG
ji+T/fOLAWAyYy0f5C2zK5zdStc6tqNjUI87Lqk1y+yzn06N/bkI9eIsEWKOJus2
rUHfzHAGZ1QFCgFtbyy3VcthVc7sfEWrIGPVaCbAWzTqcTQlzJOGydLYdkBGDtVq
Z+esDXuESCRnQk0MxY74PIOvIhv5/maC7AsSP+z6D1BhaGzgEaKL+yHEHLhqfmbZ
DEQI18HFstQtmfk0NI4EkiA9Gds6sU128gRMZGKgQ8uNlUQMuuyIfiEeg09QaINs
SVNFTXYfmcFc5YJUVkM8
=qZor
-----END PGP SIGNATURE-----




More information about the kernel-team mailing list