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. > >