[PATCH] staging: iio: adc: ad7816: use sysfs_streq() instead of strcmp()

Md. Mahmudul Hasan Mabud posted 1 patch 3 days, 1 hour ago
drivers/staging/iio/adc/ad7816.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] staging: iio: adc: ad7816: use sysfs_streq() instead of strcmp()
Posted by Md. Mahmudul Hasan Mabud 3 days, 1 hour ago
Use sysfs_streq() to compare the input buffer with the mode strings.
This is more robust as it ignores trailing newlines, making it safer
for sysfs store functions.

Signed-off-by: Md. Mahmudul Hasan Mabud <mdmahmudulhasan1511@gmail.com>
---
 drivers/staging/iio/adc/ad7816.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/iio/adc/ad7816.c b/drivers/staging/iio/adc/ad7816.c
index 172acf135..c2544415e 100644
--- a/drivers/staging/iio/adc/ad7816.c
+++ b/drivers/staging/iio/adc/ad7816.c
@@ -136,7 +136,7 @@ static ssize_t ad7816_store_mode(struct device *dev,
 	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
 	struct ad7816_chip_info *chip = iio_priv(indio_dev);
 
-	if (strcmp(buf, "full") == 0) {
+	if (sysfs_streq(buf, "full")) {
 		gpiod_set_value(chip->rdwr_pin, 1);
 		chip->mode = AD7816_FULL;
 	} else {
-- 
2.34.1
Re: [PATCH] staging: iio: adc: ad7816: use sysfs_streq() instead of strcmp()
Posted by Andy Shevchenko 2 days, 23 hours ago
On Mon, Mar 30, 2026 at 01:48:50PM +0600, Md. Mahmudul Hasan Mabud wrote:
> Use sysfs_streq() to compare the input buffer with the mode strings.
> This is more robust as it ignores trailing newlines, making it safer
> for sysfs store functions.

...

>  	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
>  	struct ad7816_chip_info *chip = iio_priv(indio_dev);
>  
> -	if (strcmp(buf, "full") == 0) {
> +	if (sysfs_streq(buf, "full")) {
>  		gpiod_set_value(chip->rdwr_pin, 1);
>  		chip->mode = AD7816_FULL;

I think it might be better to do more work on this.
First of all, convert to use IIO_DEVICE_ATTR_RW().
Second, convert to use sysfs_emit() instead of sprintf().
But with that, switch to use a static array

static const char * const modes[] = {
	[_FULL] = "full";
	[_PD] = "power-save";
};

This will need redefinition to start from 0 (I don't see why it needs to
start from 1).

#define _FULL	0
#define _PD	1

This allows to switch to sysfs_match_string() and return an error on
unrecognized input (which is absent right now).

So, something like series out of ~3-4 patches is expected.

-- 
With Best Regards,
Andy Shevchenko