Re: [PATCH v3 3/4] arm64: kaslr: Fix incorrect placement of __initdata and __read_mostly

From: Ard Biesheuvel
Date: Mon Aug 15 2016 - 02:41:48 EST


On 15 August 2016 at 07:57, Jisheng Zhang <jszhang@xxxxxxxxxxx> wrote:
> Hi Ard,
>
> On Mon, 15 Aug 2016 12:52:14 +0800 Jisheng Zhang wrote:
>
>> Hi Ard,
>>
>> On Fri, 12 Aug 2016 14:02:40 +0200 Ard Biesheuvel wrote:
>>
>> > Hi Jisheng,
>> >
>> > On 12 August 2016 at 10:01, Jisheng Zhang <jszhang@xxxxxxxxxxx> wrote:
>> > > __initdata and __read_mostly should be placed after the variable name
>> > > for the variable to be placed in the intended section.
>> > >
>> >
>> > Why?
>>
>> include/linux/init.h says something as:
>>
>> * For initialized data:
>> * You should insert __initdata or __initconst between the variable name
>> * and equal sign followed by value, e.g.:
>> *
>> * static int init_variable __initdata = 0;
>> * static const char linux_logo[] __initconst = { 0x32, 0x36, ... };
>>
>> and examples in gcc manual also put __attribute__ (...) after variable name.
>>
>> https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#Common-Variable-Attributes
>>
>> Then I grep the source, found most lines (especially arch/arm64/*) put the
>> __initdata and __read_mostly after the variable name.
>>
>> However, I built the code with three different gcc, the result looks identical
>> no matter where these markers put. So the commit msg looks wrong, what about
>> changes it as
>>
>> "put __initdata and __read_mostly after the variable name
>> to keep the style consistent"?
>
> After some consideration, I want to drop this patch in newer version since
> it's not a bug, just "style"
>

OK, thanks for clearing that up. I don't object to the patch, but I
wanted to get confirmation that the current code is also correct.

Thanks,
Ard.