Re: [PATCH] tty: 8250: replace snprintf in show functions with sysfs_emit

From: Greg Kroah-Hartman
Date: Fri Oct 15 2021 - 02:58:02 EST


On Thu, Oct 14, 2021 at 11:51:22PM -0700, Qing Wang wrote:
> show() must not use snprintf() when formatting the value to be
> returned to user space.

Why must it not? What is broken in the existing code?

>
> Fix the coccicheck warnings:
> WARNING: use scnprintf or sprintf.
>
> Signed-off-by: Qing Wang <wangqing@xxxxxxxx>
> ---
> drivers/tty/serial/8250/8250_aspeed_vuart.c | 6 +++---
> drivers/tty/serial/8250/8250_port.c | 2 +-
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/tty/serial/8250/8250_aspeed_vuart.c b/drivers/tty/serial/8250/8250_aspeed_vuart.c
> index 2350fb3..082b9bd 100644
> --- a/drivers/tty/serial/8250/8250_aspeed_vuart.c
> +++ b/drivers/tty/serial/8250/8250_aspeed_vuart.c
> @@ -82,7 +82,7 @@ static ssize_t lpc_address_show(struct device *dev,
> addr = (aspeed_vuart_readb(vuart, ASPEED_VUART_ADDRH) << 8) |
> (aspeed_vuart_readb(vuart, ASPEED_VUART_ADDRL));
>
> - return snprintf(buf, PAGE_SIZE - 1, "0x%x\n", addr);
> + return sysfs_emit(buf - 1, "0x%x\n", addr);

what is the buf-1 thing here for?

Doing a tree-wide change for this type of thing might not be wanted by
many maintainers, especially if you introduce bugs like this :(

greg k-h