2022-11-07 11:06:41

by Akira Yokosawa

[permalink] [raw]
Subject: Duplicate kernel-doc comments for ksize()

Hi Kees,

"make htmldocs" reports duplicate C declaration of ksize()
as follows:

/linux/Documentation/core-api/mm-api:43: ./mm/slab_common.c:1428: WARNING: Duplicate C declaration, also defined at core-api/mm-api:212.
Declaration is '.. c:function:: size_t ksize (const void *objp)'.

This is due to the kernel-doc comment for ksize() added in
include/linux/slab.h by a commit you have authored:
05a940656e1e ("slab:Introduce kmalloc_size_roundup()").

/**
* ksize - Report actual allocation size of associated object
*
* @objp: Pointer returned from a prior kmalloc()-family allocation.
*
* This should not be used for writing beyond the originally requested
* allocation size. Either use krealloc() or round up the allocation size
* with kmalloc_size_roundup() prior to allocation. If this is used to
* access beyond the originally requested allocation size, UBSAN_BOUNDS
* and/or FORTIFY_SOURCE may trip, since they only know about the
* originally allocated size via the __alloc_size attribute.
*/

There is another kernel-doc comment in mm/slab_common.c (originally
by Manfred, since v2.6.14):

/**
* ksize - get the actual amount of memory allocated for a given object
* @objp: Pointer to the object
*
* kmalloc may internally round up allocations and return more memory
* than requested. ksize() can be used to determine the actual amount of
* memory allocated. The caller may use this additional memory, even though
* a smaller amount of memory was initially specified with the kmalloc call.
* The caller must guarantee that objp points to a valid object previously
* allocated with either kmalloc() or kmem_cache_alloc(). The object
* must not be freed during the duration of the call.
*
* Return: size of the actual memory used by @objp in bytes
*/

I guess the one in slab_common.c is outdated and can be removed.
Can you please take care of it?

Thanks, Akira


2022-11-07 16:49:18

by Vlastimil Babka

[permalink] [raw]
Subject: Re: Duplicate kernel-doc comments for ksize()

On 11/7/22 11:41, Akira Yokosawa wrote:
> Hi Kees,
>
> "make htmldocs" reports duplicate C declaration of ksize()
> as follows:
>
> /linux/Documentation/core-api/mm-api:43: ./mm/slab_common.c:1428: WARNING: Duplicate C declaration, also defined at core-api/mm-api:212.
> Declaration is '.. c:function:: size_t ksize (const void *objp)'.
>
> This is due to the kernel-doc comment for ksize() added in
> include/linux/slab.h by a commit you have authored:
> 05a940656e1e ("slab:Introduce kmalloc_size_roundup()").
>
> /**
> * ksize - Report actual allocation size of associated object
> *
> * @objp: Pointer returned from a prior kmalloc()-family allocation.
> *
> * This should not be used for writing beyond the originally requested
> * allocation size. Either use krealloc() or round up the allocation size
> * with kmalloc_size_roundup() prior to allocation. If this is used to
> * access beyond the originally requested allocation size, UBSAN_BOUNDS
> * and/or FORTIFY_SOURCE may trip, since they only know about the
> * originally allocated size via the __alloc_size attribute.
> */
>
> There is another kernel-doc comment in mm/slab_common.c (originally
> by Manfred, since v2.6.14):
>
> /**
> * ksize - get the actual amount of memory allocated for a given object
> * @objp: Pointer to the object
> *
> * kmalloc may internally round up allocations and return more memory
> * than requested. ksize() can be used to determine the actual amount of
> * memory allocated. The caller may use this additional memory, even though
> * a smaller amount of memory was initially specified with the kmalloc call.
> * The caller must guarantee that objp points to a valid object previously
> * allocated with either kmalloc() or kmem_cache_alloc(). The object
> * must not be freed during the duration of the call.
> *
> * Return: size of the actual memory used by @objp in bytes
> */
>
> I guess the one in slab_common.c is outdated and can be removed.
> Can you please take care of it?

Thanks for the report, I've removed the comment myself in a slab.git fixes
branch I'll be sending a PR for this week:

https://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git/commit/?h=slab/for-6.1-rc4/fixes&id=c18c20f16219516b12a4f2fd29c25e06be97e064

> Thanks, Akira