hwmon: Make chip parameter for with_info API mandatory
authorGuenter Roeck <linux@roeck-us.net>
Wed, 11 May 2022 13:22:51 +0000 (06:22 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Sun, 22 May 2022 18:32:31 +0000 (11:32 -0700)
Various attempts were made recently to "convert" the old
hwmon_device_register() API to devm_hwmon_device_register_with_info()
by just changing the function name without actually converting the
driver. Prevent this from happening by making the 'chip' parameter of
devm_hwmon_device_register_with_info() mandatory.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Documentation/hwmon/hwmon-kernel-api.rst
drivers/hwmon/hwmon.c

index e2975d5caf34f67a2d5371d4aea1635ccdf00808..f3276b3a381a14256f409cb41355df481f2b53e7 100644 (file)
@@ -76,7 +76,7 @@ hwmon_device_register_with_info is the most comprehensive and preferred means
 to register a hardware monitoring device. It creates the standard sysfs
 attributes in the hardware monitoring core, letting the driver focus on reading
 from and writing to the chip instead of having to bother with sysfs attributes.
-The parent device parameter cannot be NULL with non-NULL chip info. Its
+The parent device parameter as well as the chip parameter must not be NULL. Its
 parameters are described in more detail below.
 
 devm_hwmon_device_register_with_info is similar to
index 13053a4edc9e1ffa7b78bcb5329e6a672162ef40..22de7a9e7ba774b58ed0e393c81fecbc40b566ee 100644 (file)
@@ -886,11 +886,12 @@ EXPORT_SYMBOL_GPL(hwmon_device_register_with_groups);
 
 /**
  * hwmon_device_register_with_info - register w/ hwmon
- * @dev: the parent device
- * @name: hwmon name attribute
- * @drvdata: driver data to attach to created device
- * @chip: pointer to hwmon chip information
+ * @dev: the parent device (mandatory)
+ * @name: hwmon name attribute (mandatory)
+ * @drvdata: driver data to attach to created device (optional)
+ * @chip: pointer to hwmon chip information (mandatory)
  * @extra_groups: pointer to list of additional non-standard attribute groups
+ *     (optional)
  *
  * hwmon_device_unregister() must be called when the device is no
  * longer needed.
@@ -903,13 +904,10 @@ hwmon_device_register_with_info(struct device *dev, const char *name,
                                const struct hwmon_chip_info *chip,
                                const struct attribute_group **extra_groups)
 {
-       if (!name)
-               return ERR_PTR(-EINVAL);
-
-       if (chip && (!chip->ops || !chip->ops->is_visible || !chip->info))
+       if (!dev || !name || !chip)
                return ERR_PTR(-EINVAL);
 
-       if (chip && !dev)
+       if (!chip->ops || !chip->ops->is_visible || !chip->info)
                return ERR_PTR(-EINVAL);
 
        return __hwmon_device_register(dev, name, drvdata, chip, extra_groups);