Re: [PATCH] iio: proximity: srf08: replace sprintf with sysfs_emit

From: Jonathan Cameron

Date: Sun Apr 19 2026 - 09:05:46 EST


On Fri, 17 Apr 2026 19:52:04 -0500
Maxwell Doose <m32285159@xxxxxxxxx> wrote:

> This patch replaces sprintf function calls with sysfs_emit and
> sysfs_emit_at. This removes unsafe functions and makes the driver more
> stable and modern, by ensuring that boundary checks take place.
>
> Signed-off-by: Maxwell Doose <m32285159@xxxxxxxxx>
Hi Maxwell.

Changes look good but I think we should make a few more changes whilst
doing this. Whilst often we'll ask people to beak out different
types of changes, that gets a bit 'flexible' when the code is changing
for other reasons and the other stuff is small enough.

So here I'd prefer to do all the stuff mentioned below in one patch.

Thanks,

Jonathan


> ---
> drivers/iio/proximity/srf08.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/iio/proximity/srf08.c b/drivers/iio/proximity/srf08.c
> index d7e4cc48cfbf..6d38a894ecd3 100644
> --- a/drivers/iio/proximity/srf08.c
> +++ b/drivers/iio/proximity/srf08.c
> @@ -226,7 +226,7 @@ static int srf08_read_raw(struct iio_dev *indio_dev,
> static ssize_t srf08_show_range_mm_available(struct device *dev,
> struct device_attribute *attr, char *buf)
> {
> - return sprintf(buf, "[0.043 0.043 11.008]\n");
> + return sysfs_emit(buf, "[0.043 0.043 11.008]\n");
> }
>
> static IIO_DEVICE_ATTR(sensor_max_range_available, S_IRUGO,
> @@ -238,7 +238,7 @@ static ssize_t srf08_show_range_mm(struct device *dev,
> struct iio_dev *indio_dev = dev_to_iio_dev(dev);
> struct srf08_data *data = iio_priv(indio_dev);
>
> - return sprintf(buf, "%d.%03d\n", data->range_mm / 1000,
> + return sysfs_emit(buf, "%d.%03d\n", data->range_mm / 1000,
> data->range_mm % 1000);
That is really odd indenting. Please reindent as:

return sysfs_emit(buf, "%d.%03d\n", data->range_mm / 1000,
data->range_mm % 1000);

If there are lots of similar cases in the driver this may make sense
as a separate follow up patch.

> }
>
> @@ -316,10 +316,10 @@ static ssize_t srf08_show_sensitivity_available(struct device *dev,
>
> for (i = 0; i < data->chip_info->num_sensitivity_avail; i++)
> if (data->chip_info->sensitivity_avail[i])
> - len += sprintf(buf + len, "%d ",
> + len += sysfs_emit_at(buf, len, "%d ",
> data->chip_info->sensitivity_avail[i]);
>
> - len += sprintf(buf + len, "\n");
> + len += sysfs_emit_at(buf, len, "\n");
>
> return len;
> }
> @@ -334,7 +334,7 @@ static ssize_t srf08_show_sensitivity(struct device *dev,
> struct srf08_data *data = iio_priv(indio_dev);
> int len;
>
> - len = sprintf(buf, "%d\n", data->sensitivity);
> + len = sysfs_emit(buf, "%d\n", data->sensitivity);

Might was well do
return sysfs_emit();

>
> return len;
> }