Re: [PATCH 3/4] configfs: Correct error value returned by API config_item_set_name()

From: Joel Becker
Date: Tue Apr 08 2025 - 18:32:35 EST


On Tue, Apr 08, 2025 at 09:26:09PM +0800, Zijun Hu wrote:
> From: Zijun Hu <quic_zijuhu@xxxxxxxxxxx>
>
> kvasprintf() failure is often caused by memory allocation which has error
> code -ENOMEM, but config_item_set_name() returns -EFAULT for the failure.
>
> Fix by returning -ENOMEM instead of -EFAULT for the failure.

The original code would return -ENOMEM on allocation failure before
calling vsnprintf(). The -EFAULT was because vsnprintf() failed.

This changed in 707c62352909a when vsnprintf() was changed to
kvasprintf(). Since kvasprintf() only really fails on -ENOMEM, the
error code should have been updated at the time.


> Signed-off-by: Zijun Hu <quic_zijuhu@xxxxxxxxxxx>

Reviewed-by: Joel Becker <jlbec@xxxxxxxxxxxx>

> ---
> fs/configfs/item.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/configfs/item.c b/fs/configfs/item.c
> index 254170a82aa337d95cbfbdf1a2db1023db3a2907..c378b5cbf87d28387a509c3cabb93eccfb520c9c 100644
> --- a/fs/configfs/item.c
> +++ b/fs/configfs/item.c
> @@ -66,7 +66,7 @@ int config_item_set_name(struct config_item *item, const char *fmt, ...)
> name = kvasprintf(GFP_KERNEL, fmt, args);
> va_end(args);
> if (!name)
> - return -EFAULT;
> + return -ENOMEM;
> }
>
> /* Free the old name, if necessary. */
>
> --
> 2.34.1
>

--

Life's Little Instruction Book #274

"Leave everything a little better than you found it."

http://www.jlbec.org/
jlbec@xxxxxxxxxxxx