Re: [PATCH 1/5] mm, slab: Make kmalloc_info[] contain all types of names

From: Rasmus Villemoes
Date: Mon Sep 09 2019 - 14:30:11 EST


On 09/09/2019 18.53, Pengfei Li wrote:
> On Mon, Sep 9, 2019 at 10:59 PM Vlastimil Babka <vbabka@xxxxxxx> wrote:

>>> /*
>>> * kmalloc_info[] is to make slub_debug=,kmalloc-xx option work at boot time.
>>> * kmalloc_index() supports up to 2^26=64MB, so the final entry of the table is
>>> * kmalloc-67108864.
>>> */
>>> const struct kmalloc_info_struct kmalloc_info[] __initconst = {
>>
>> BTW should it really be an __initconst, when references to the names
>> keep on living in kmem_cache structs? Isn't this for data that's
>> discarded after init?
>
> You are right, I will remove __initconst in v2.

No, __initconst is correct, and should be kept. The string literals
which the .name pointers point to live in .rodata, and we're copying the
values of these .name pointers. Nothing refers to something inside
kmalloc_info[] after init. (It would be a whole different matter if
struct kmalloc_info_struct consisted of { char name[NN]; unsigned int
size; }).

Rasmus