drivers/staging/iio/adc/ad7816.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
This patch replaces sprintf calls in ad7816.c with sysfs_emit to help
modernize the driver, ensure bounds checking, and to increase stability.
Signed-off-by: Maxwell Doose <m32285159@gmail.com>
---
drivers/staging/iio/adc/ad7816.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/staging/iio/adc/ad7816.c b/drivers/staging/iio/adc/ad7816.c
index 172acf135f3b..0e32a2295990 100644
--- a/drivers/staging/iio/adc/ad7816.c
+++ b/drivers/staging/iio/adc/ad7816.c
@@ -124,8 +124,8 @@ static ssize_t ad7816_show_mode(struct device *dev,
struct ad7816_chip_info *chip = iio_priv(indio_dev);
if (chip->mode)
- return sprintf(buf, "power-save\n");
- return sprintf(buf, "full\n");
+ return sysfs_emit(buf, "power-save\n");
+ return sysfs_emit(buf, "full\n");
}
static ssize_t ad7816_store_mode(struct device *dev,
@@ -156,7 +156,7 @@ static ssize_t ad7816_show_available_modes(struct device *dev,
struct device_attribute *attr,
char *buf)
{
- return sprintf(buf, "full\npower-save\n");
+ return sysfs_emit(buf, "full\npower-save\n");
}
static IIO_DEVICE_ATTR(available_modes, 0444, ad7816_show_available_modes,
@@ -169,7 +169,7 @@ static ssize_t ad7816_show_channel(struct device *dev,
struct iio_dev *indio_dev = dev_to_iio_dev(dev);
struct ad7816_chip_info *chip = iio_priv(indio_dev);
- return sprintf(buf, "%d\n", chip->channel_id);
+ return sysfs_emit(buf, "%d\n", chip->channel_id);
}
static ssize_t ad7816_store_channel(struct device *dev,
@@ -231,9 +231,9 @@ static ssize_t ad7816_show_value(struct device *dev,
data &= AD7816_TEMP_FLOAT_MASK;
if (value < 0)
data = BIT(AD7816_TEMP_FLOAT_OFFSET) - data;
- return sprintf(buf, "%d.%.2d\n", value, data * 25);
+ return sysfs_emit(buf, "%d.%.2d\n", value, data * 25);
}
- return sprintf(buf, "%u\n", data);
+ return sysfs_emit(buf, "%u\n", data);
}
static IIO_DEVICE_ATTR(value, 0444, ad7816_show_value, NULL, 0);
@@ -281,9 +281,9 @@ static ssize_t ad7816_show_oti(struct device *dev,
value = AD7816_BOUND_VALUE_MIN +
(chip->oti_data[chip->channel_id] -
AD7816_BOUND_VALUE_BASE);
- return sprintf(buf, "%d\n", value);
+ return sysfs_emit(buf, "%d\n", value);
}
- return sprintf(buf, "%u\n", chip->oti_data[chip->channel_id]);
+ return sysfs_emit(buf, "%u\n", chip->oti_data[chip->channel_id]);
}
static inline ssize_t ad7816_set_oti(struct device *dev,
--
2.53.0
On Sat, Apr 18, 2026 at 08:05:37PM -0500, Maxwell Doose wrote: > This patch replaces sprintf calls in ad7816.c with sysfs_emit to help > modernize the driver, ensure bounds checking, and to increase stability. This says that changing to sysfs_emit() will increase the stability of the driver, but actually that's not true. I am fine with these sorts of hardening patches but I want the commit message to say that "The original code is fine as is" instead of implying it is unstable. If the commit did fix a real issue, then we would need a Fixes tag. regards, dan carpenter
On Mon, Apr 20, 2026 at 8:54 AM Dan Carpenter <error27@gmail.com> wrote: > > This says that changing to sysfs_emit() will increase the stability of > the driver, but actually that's not true. Sorry. Like I've said in previous emails to you, I'm still figuring it all out. When I made this patch, I was under the impression that since sysfs_emit() improved security by preventing overflow errors, that it would inherently improve stability as well. Thanks for pointing out my error.
On Sat, 18 Apr 2026 20:05:37 -0500 Maxwell Doose <m32285159@gmail.com> wrote: > This patch replaces sprintf calls in ad7816.c with sysfs_emit to help > modernize the driver, ensure bounds checking, and to increase stability. > > Signed-off-by: Maxwell Doose <m32285159@gmail.com> Hi Maxwell, There is a more substantial rework of this code undergoing revisions. https://lore.kernel.org/all/20260331072453.6530-1-mdmahmudulhasan1511@gmail.com/ Both because that's been underway for a little time and because it makes a wider set of improvements, I'd rather we took that one forwards. However, as I noted in that thread, the ABI is likely to go away anyway as part of dragging this driver into a state suitable for moving out of staging. I don't mind cleaning it up as an intermediate state however as that graduation from staging may take a while! Thanks, Jonathan
On Sun, Apr 19, 2026 at 6:33 AM Jonathan Cameron <jic23@kernel.org> wrote: > > Both because that's been underway for a little time and because it makes > a wider set of improvements, I'd rather we took that one forwards. Sorry, I didn't see the other patch. I'll focus on the v2 for the srf08 patch for the time being then. best regards, maxwell
© 2016 - 2026 Red Hat, Inc.