Re: [PATCH v1 1/1] hwrng: core - Replace strlcat() with better alternative

From: David Laight

Date: Mon May 04 2026 - 17:02:01 EST


On Mon, 4 May 2026 15:02:59 +0200
Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:

> strlcpy() and strlcat() are confusing APIs and the former one already
> gone from the kernel.
>
> In preparation to kill strlcat() replace it with the better alternative.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>

Reviewed-by: David Laight <david.laight.linux@xxxxxxxxx>

> ---
> drivers/char/hw_random/core.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
> index aba92d777f72..c789699bd773 100644
> --- a/drivers/char/hw_random/core.c
> +++ b/drivers/char/hw_random/core.c
> @@ -418,21 +418,21 @@ static ssize_t rng_available_show(struct device *dev,
> struct device_attribute *attr,
> char *buf)
> {
> + int len = 0;
> int err;
> struct hwrng *rng;
>
> err = mutex_lock_interruptible(&rng_mutex);
> if (err)
> return -ERESTARTSYS;
> - buf[0] = '\0';
> - list_for_each_entry(rng, &rng_list, list) {
> - strlcat(buf, rng->name, PAGE_SIZE);
> - strlcat(buf, " ", PAGE_SIZE);
> - }
> - strlcat(buf, "none\n", PAGE_SIZE);
> +
> + list_for_each_entry(rng, &rng_list, list)
> + len += sysfs_emit_at(buf, len, "%s ", rng->name);
> + len += sysfs_emit_at(buf, len, "none\n");
> +
> mutex_unlock(&rng_mutex);
>
> - return strlen(buf);
> + return len;
> }
>
> static ssize_t rng_selected_show(struct device *dev,