Re: [RFC PATCH 1/3] proc/meminfo: introduce extra meminfo

From: Jaewon Kim
Date: Wed Mar 11 2020 - 02:31:23 EST




On 2020ë 03ì 11ì 15:25, Sergey Senozhatsky wrote:
> On (20/03/11 15:18), Sergey Senozhatsky wrote:
>> On (20/03/11 12:44), Jaewon Kim wrote:
>> [..]
>>> +#define NAME_SIZE 15
>>> +#define NAME_BUF_SIZE (NAME_SIZE + 2) /* ':' and '\0' */
>>> +
>>> +struct extra_meminfo {
>>> + struct list_head list;
>>> + atomic_long_t *val;
>>> + int shift_for_page;
>>> + char name[NAME_BUF_SIZE];
>>> + char name_pad[NAME_BUF_SIZE];
>>> +};
>>> +
>>> +int register_extra_meminfo(atomic_long_t *val, int shift, const char *name)
>>> +{
>>> + struct extra_meminfo *meminfo, *memtemp;
>>> + int len;
>>> + int error = 0;
>>> +
>>> + meminfo = kzalloc(sizeof(*meminfo), GFP_KERNEL);
>>> + if (!meminfo) {
>>> + error = -ENOMEM;
>>> + goto out;
>>> + }
>>> +
>>> + meminfo->val = val;
>>> + meminfo->shift_for_page = shift;
>>> + strncpy(meminfo->name, name, NAME_SIZE);
>>> + len = strlen(meminfo->name);
>>> + meminfo->name[len] = ':';
>>> + strncpy(meminfo->name_pad, meminfo->name, NAME_BUF_SIZE);
>> What happens if there is no NULL byte among the first NAME_SIZE bytes
>> of passed `name'?
> Ah. The buffer size is NAME_BUF_SIZE, so should be fine.
>
> -ss
Hello yes correct.

For your comment of 'spinlock', it may be changed to other lock like rw semaphore.
I think there are just couple of writers compared to many readers.
Thank you for your comment.
>
>