From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0EDAA493621 for ; Wed, 7 Oct 2026 13:52:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791381145; cv=none; b=IytjTmkOr38JBnTDsg9Ooc8ZWgWJ5Xr91tFUaPVh0VcPpNQWaWnqMtmmMQfTaTcQAwne+U1uP1+JjeIOSo2pLsVgGkRO4tWqYw/LqvC5T56LZhGm/2V0iGUSqmnT4+kmX8p+NwysSY8VMGigEPLt2XHhKRNYJEoF8xPlOkRBVeo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791381145; c=relaxed/simple; bh=gGwjSvl+z9pW6bbPCaaNS0klvdQ7vWn6BaNEIaLW0xk=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=qGkJsBDcVjkhvmIvb+30jQESKtBLkWHCONplNivDXGrNj03bZEptW5RmRWD3ATY7ZMIQOawjCsyikD7j5rVUPxwjvkGczjuAQCN/iyNuYnz0YfwVyhEUczWbJN3cOEQbVWYa0MQHqNpzHR8b9WaGOi6ns6UY0l7Mz51q8HzVVJI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=i3vmzwBt; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="i3vmzwBt" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-48b042c0728so595477f8f.1 for ; Wed, 07 Oct 2026 06:52:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791381128; x=1791985928; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=aMm89ZuMFRUcykpwHvtlCEKlZZULqgCCXLBJZNe/c4Y=; b=i3vmzwBtV0mZhg+8DgXJ3bvE0p+8BQKU6i2n8rlN18EPzT6MC7YfLH6x0d2JLLVUx/ gyX100cj2xhKF6J/bJZyWxYRVXx4cjtSYispW1sGrBufI8IOlFE5ebU5sd4bw4uU7xma yR5B4iSWNFlvvEIA9rq4t7YhY9Wn081QG49GRKfZVvXGRs8PM5lJ4fBSVLxBLmEB0vkx F10VYxtE3K/jFUHkrAFuY11r0ZrvAI2QUdmuEPC5I93/QMXAbxfiPHRSuKXrl6iRlNga aL77GK6pER7MKb7ZglvSB8peNTiLkABcYq6u83R5wIFakHJj3qhH0+v8Wuf/FeB+EMGO 6AWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791381128; x=1791985928; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=aMm89ZuMFRUcykpwHvtlCEKlZZULqgCCXLBJZNe/c4Y=; b=QYqd7S5UYk2oqPbcvqOH9Eblgqv9ou83m0uDUpfRPJyqbRT2uPvqbu+wB0yM/EbuL1 ItxRxwyC/zb4xS8LjnHjjNRVlkDvW7RIVvXw+DonW48WGWYuEKu1UYLVlaDfgQxvJo+h XXkt87SF2ruhJYTETQb0bAmmXw+b/lCXuLQToC18MVPXrWMlHuftz7HnHlLJ8PsZ/tq7 grKa90VGSu4nEjqMDq2QLgby1C86GQcq6KFQUMqX3pYYl3jhHMmATeslCLUUz97zuVuY DS1/9EPrI4VPX+hAyExML8QTYBmZqjiDVcuxwoVeWoLJgdeE9w5t+ZPpuhogD6CC//Ea TVag== X-Forwarded-Encrypted: i=1; AKwUvBzQFYVgFEJrnSrryTFAEWIdYjO4/kSaxEsLTMingftHnWQlG3oB8EudLYoYh/yZXjPH6FrQWP3XKffmupI=@vger.kernel.org X-Gm-Message-State: AFq9FYJMuw/2aS1V3WyvOmxUiuqjZvSsYPkGtcqy/ZzFT/j+EkxaLe/u k3WNZ/rJ1+OmhPd5ugRpn1pFZPyEfBChpxKxrlrlx1+kmrP9x5Ejy4Bp X-Gm-Gg: AYBFou0IhivrQeBWXHkTXcYouqxnJjuvU4TqQsKpkbhA/l170xGWa3CQC42zWuGDKrf mgqhr5HLfnwHLk+YO7euCEfc3DGrHVQEv4XjqZpcqORAr9hHsHwCtBa8VX07ptMCepkavR2cHlE 5SE4MiDlYA/KnTHWhdB/w4HjXJy4vKmwbzA82haU1SqAHMamcCK53xHp0B+qJgzhim7fqkzIAGW sdlzR4mJofVqdgT0TYgwNJV8L11JWi8mHGa4jEd76lL8e7gtNMtzV0b4rmb0EeVprMSb3iQEXDh QZXrwbgfnHo4m0iBKzFjTRjZEtXyzsNc/jS9lfJr+VawMAUnb92+pKfuaszcdb+vjziRuqtq1IY kHAwKkGcWzoeqzxlB0EZ5PPdhZXQatZReQm8iRbfelflJUQU4zUiLDLXx0QZUFs2ejWEgTGRadI 8fG/245Cov5Xzd3wNuBxgAl6GK9KuoZ8YiCK4yDGXRFdLRnqdi/2J5zrx6gOzvEvxchHMQemvB/ xAiMz5JGhAEoAAbHPHp66FhTJt6sA== X-Received: by 2002:a05:6000:128d:b0:48c:7161:43e3 with SMTP id ffacd0b85a97d-48c72889494mr3126374f8f.54.1791381127670; Wed, 07 Oct 2026 06:52:07 -0700 (PDT) Received: from fedora ([154.183.153.81]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48c75b4e399sm3651658f8f.56.2026.10.07.06.52.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Oct 2026 06:52:07 -0700 (PDT) From: Abdelnasser Hussein To: =?UTF-8?q?Nuno=20S=C3=A1?= , Michael Hennerich , Jonathan Cameron , Greg Kroah-Hartman Cc: David Lechner , Andy Shevchenko , Joshua Crofts , linux@analog.com, linux-iio@vger.kernel.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Abdelnasser Hussein Subject: [PATCH v2] staging: iio: adt7316: use kstrtobool() for sysfs boolean parsing Date: Wed, 7 Oct 2026 16:51:51 +0300 Message-ID: <20261007135151.11780-1-abdelnasserhussein11@gmail.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Replace manual and unsafe character checks (e.g., buf[0] == '1') with the standard kstrtobool() API in sysfs store functions. This ensures proper handling of standard boolean inputs, fixes potential safety issues, and adheres to the Linux kernel coding style. Reviewed-by: Joshua Crofts Signed-off-by: Abdelnasser Hussein --- Changes in v2: - Included explicitly as requested. - Renamed the boolean variable from 'req' to 'val'. (My initial thought was 'req' as an abbreviation for 'user request', but 'val' is much clearer and avoids any confusion with block/network requests). - Added Reviewed-by tag from Joshua. drivers/staging/iio/addac/adt7316.c | 95 +++++++++++++++++++++++------ 1 file changed, 78 insertions(+), 17 deletions(-) diff --git a/drivers/staging/iio/addac/adt7316.c b/drivers/staging/iio/addac/adt7316.c index 20f6052cc7fb..719261cfce9e 100644 --- a/drivers/staging/iio/addac/adt7316.c +++ b/drivers/staging/iio/addac/adt7316.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -246,12 +247,12 @@ static ssize_t adt7316_store_enabled(struct device *dev, { struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); - int enable; + bool enable; + int ret; - if (buf[0] == '1') - enable = 1; - else - enable = 0; + ret = kstrtobool(buf, &enable); + if (ret) + return ret; if (_adt7316_store_enabled(chip, enable) < 0) return -EIO; @@ -285,13 +286,18 @@ static ssize_t adt7316_store_select_ex_temp(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 config1; + bool val; int ret; if ((chip->id & ID_FAMILY_MASK) != ID_ADT75XX) return -EPERM; + ret = kstrtobool(buf, &val); + if (ret) + return ret; + config1 = chip->config1 & (~ADT7516_SEL_EX_TEMP); - if (buf[0] == '1') + if (val) config1 |= ADT7516_SEL_EX_TEMP; ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG1, config1); @@ -482,10 +488,15 @@ static ssize_t adt7316_store_disable_averaging(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 config2; + bool val; int ret; + ret = kstrtobool(buf, &val); + if (ret) + return ret; + config2 = chip->config2 & (~ADT7316_DISABLE_AVERAGING); - if (buf[0] == '1') + if (val) config2 |= ADT7316_DISABLE_AVERAGING; ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG2, config2); @@ -521,10 +532,15 @@ static ssize_t adt7316_store_enable_smbus_timeout(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 config2; + bool val; int ret; + ret = kstrtobool(buf, &val); + if (ret) + return ret; + config2 = chip->config2 & (~ADT7316_EN_SMBUS_TIMEOUT); - if (buf[0] == '1') + if (val) config2 |= ADT7316_EN_SMBUS_TIMEOUT; ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG2, config2); @@ -559,10 +575,15 @@ static ssize_t adt7316_store_powerdown(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 config1; + bool val; int ret; + ret = kstrtobool(buf, &val); + if (ret) + return ret; + config1 = chip->config1 & (~ADT7316_PD); - if (buf[0] == '1') + if (val) config1 |= ADT7316_PD; ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG1, config1); @@ -597,10 +618,15 @@ static ssize_t adt7316_store_fast_ad_clock(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 config3; + bool val; int ret; + ret = kstrtobool(buf, &val); + if (ret) + return ret; + config3 = chip->config3 & (~ADT7316_ADCLK_22_5); - if (buf[0] == '1') + if (val) config3 |= ADT7316_ADCLK_22_5; ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, config3); @@ -640,13 +666,18 @@ static ssize_t adt7316_store_da_high_resolution(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 config3; + bool val; int ret; if (chip->id == ID_ADT7318 || chip->id == ID_ADT7519) return -EPERM; + ret = kstrtobool(buf, &val); + if (ret) + return ret; + config3 = chip->config3 & (~ADT7316_DA_HIGH_RESOLUTION); - if (buf[0] == '1') + if (val) config3 |= ADT7316_DA_HIGH_RESOLUTION; ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, config3); @@ -685,12 +716,17 @@ static ssize_t adt7316_store_AIN_internal_Vref(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 config3; + bool val; int ret; if ((chip->id & ID_FAMILY_MASK) != ID_ADT75XX) return -EPERM; - if (buf[0] != '1') + ret = kstrtobool(buf, &val); + if (ret) + return ret; + + if (!val) config3 = chip->config3 & (~ADT7516_AIN_IN_VREF); else config3 = chip->config3 | ADT7516_AIN_IN_VREF; @@ -728,10 +764,15 @@ static ssize_t adt7316_store_enable_prop_DACA(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 config3; + bool val; int ret; + ret = kstrtobool(buf, &val); + if (ret) + return ret; + config3 = chip->config3 & (~ADT7316_EN_IN_TEMP_PROP_DACA); - if (buf[0] == '1') + if (val) config3 |= ADT7316_EN_IN_TEMP_PROP_DACA; ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, config3); @@ -767,10 +808,15 @@ static ssize_t adt7316_store_enable_prop_DACB(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 config3; + bool val; int ret; + ret = kstrtobool(buf, &val); + if (ret) + return ret; + config3 = chip->config3 & (~ADT7316_EN_EX_TEMP_PROP_DACB); - if (buf[0] == '1') + if (val) config3 |= ADT7316_EN_EX_TEMP_PROP_DACB; ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, config3); @@ -967,10 +1013,15 @@ static ssize_t adt7316_store_DA_AB_Vref_bypass(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 dac_config; + bool val; int ret; + ret = kstrtobool(buf, &val); + if (ret) + return ret; + dac_config = chip->dac_config & (~ADT7316_VREF_BYPASS_DAC_AB); - if (buf[0] == '1') + if (val) dac_config |= ADT7316_VREF_BYPASS_DAC_AB; ret = chip->bus.write(chip->bus.client, ADT7316_DAC_CONFIG, dac_config); @@ -1006,10 +1057,15 @@ static ssize_t adt7316_store_DA_CD_Vref_bypass(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 dac_config; + bool val; int ret; + ret = kstrtobool(buf, &val); + if (ret) + return ret; + dac_config = chip->dac_config & (~ADT7316_VREF_BYPASS_DAC_CD); - if (buf[0] == '1') + if (val) dac_config |= ADT7316_VREF_BYPASS_DAC_CD; ret = chip->bus.write(chip->bus.client, ADT7316_DAC_CONFIG, dac_config); @@ -1969,10 +2025,15 @@ static ssize_t adt7316_set_int_enabled(struct device *dev, struct iio_dev *dev_info = dev_to_iio_dev(dev); struct adt7316_chip_info *chip = iio_priv(dev_info); u8 config1; + bool val; int ret; + ret = kstrtobool(buf, &val); + if (ret) + return ret; + config1 = chip->config1 & (~ADT7316_INT_EN); - if (buf[0] == '1') + if (val) config1 |= ADT7316_INT_EN; ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG1, config1); -- 2.54.0