[PATCH] clk: don't use __initconst for non-const arrays

Ard Biesheuvel ard.biesheuvel at linaro.org
Fri Sep 12 00:42:29 PDT 2014


On 12 September 2014 00:04, Uwe Kleine-König
<u.kleine-koenig at pengutronix.de> wrote:
> Hello,
>
> On Thu, Sep 11, 2014 at 11:04:31PM +0200, Uwe Kleine-König wrote:
>>  /* Mux parent lists. */
>> -static const char *fin_pll_p[] __initconst = {
>> +static const char *fin_pll_p[] __initdata = {
>>       "xxti",
>>       "xusbxti"
>>  };
> As discussed with Tomasz on irc: The sad thing here is that for this
> array only 8 bytes are freed when .init.rodata is thrown away (that is
> two pointers). The actual data---5 + 8 bytes + maybe aligning---isn't
> freed though.
>
> We wondered if there is a nice and easy way to throw away the
> characters, too.
>
> The only way I currently see is:
>
>         const char xxti[] __initconst = "xxti";
>         ...
>
>         static const char *fin_pll_p[] __initdata = {
>                 xxti,
>                 ...
>         };
>
> but this definitively doesn't qualify as "nice and easy". Is there an
> alternative?
>

What about doing

static const char fin_pll_p[][8] __initconst = {
     "xxti",
     "xusbxti"
};



More information about the linux-arm-kernel mailing list