* [PATCH] iio: proximity: srf08: replace sprintf with sysfs_emit
@ 2026-04-18 0:52 Maxwell Doose
2026-04-19 13:05 ` Jonathan Cameron
2026-04-20 7:26 ` Andy Shevchenko
0 siblings, 2 replies; 3+ messages in thread
From: Maxwell Doose @ 2026-04-18 0:52 UTC (permalink / raw)
To: ak, jic23; +Cc: dlechner, nuno.sa, andy, linux-iio, linux-kernel
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@gmail.com>
---
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);
}
@@ -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);
return len;
}
--
2.53.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] iio: proximity: srf08: replace sprintf with sysfs_emit
2026-04-18 0:52 [PATCH] iio: proximity: srf08: replace sprintf with sysfs_emit Maxwell Doose
@ 2026-04-19 13:05 ` Jonathan Cameron
2026-04-20 7:26 ` Andy Shevchenko
1 sibling, 0 replies; 3+ messages in thread
From: Jonathan Cameron @ 2026-04-19 13:05 UTC (permalink / raw)
To: Maxwell Doose; +Cc: ak, dlechner, nuno.sa, andy, linux-iio, linux-kernel
On Fri, 17 Apr 2026 19:52:04 -0500
Maxwell Doose <m32285159@gmail.com> 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@gmail.com>
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;
> }
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] iio: proximity: srf08: replace sprintf with sysfs_emit
2026-04-18 0:52 [PATCH] iio: proximity: srf08: replace sprintf with sysfs_emit Maxwell Doose
2026-04-19 13:05 ` Jonathan Cameron
@ 2026-04-20 7:26 ` Andy Shevchenko
1 sibling, 0 replies; 3+ messages in thread
From: Andy Shevchenko @ 2026-04-20 7:26 UTC (permalink / raw)
To: Maxwell Doose; +Cc: ak, jic23, dlechner, nuno.sa, andy, linux-iio, linux-kernel
On Fri, Apr 17, 2026 at 07:52:04PM -0500, Maxwell Doose wrote:
> This patch replaces sprintf function calls with sysfs_emit and
sysfs_emit()
> sysfs_emit_at. This removes unsafe functions and makes the driver more
sysfs_emit_at()
> stable and modern, by ensuring that boundary checks take place.
...
> - 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);
While at it, we may rewrap it to follow the logical split:
return sysfs_emit(buf, "%d.%03d\n",
data->range_mm / 1000, data->range_mm % 1000);
No need to resend for this. And maybe Jonathan has better idea of this.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-04-20 7:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-18 0:52 [PATCH] iio: proximity: srf08: replace sprintf with sysfs_emit Maxwell Doose
2026-04-19 13:05 ` Jonathan Cameron
2026-04-20 7:26 ` Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox