iio: hw_consumer: simplify devm_iio_hw_consumer_alloc()
authorYicong Yang <yangyicong@hisilicon.com>
Thu, 8 Apr 2021 11:38:12 +0000 (19:38 +0800)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 17 May 2021 12:49:06 +0000 (13:49 +0100)
Use devm_add_action_or_reset() instead of devres_alloc() and
devres_add(), which works the same. This will simplify the
code. There is no functional changes.

Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
Reviewed-by: Nuno Sa <nuno.sa@analog.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/1617881896-3164-4-git-send-email-yangyicong@hisilicon.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/buffer/industrialio-hw-consumer.c

index f2d2778..87d9aab 100644 (file)
@@ -137,9 +137,9 @@ void iio_hw_consumer_free(struct iio_hw_consumer *hwc)
 }
 EXPORT_SYMBOL_GPL(iio_hw_consumer_free);
 
-static void devm_iio_hw_consumer_release(struct device *dev, void *res)
+static void devm_iio_hw_consumer_release(void *iio_hwc)
 {
-       iio_hw_consumer_free(*(struct iio_hw_consumer **)res);
+       iio_hw_consumer_free(iio_hwc);
 }
 
 /**
@@ -153,20 +153,17 @@ static void devm_iio_hw_consumer_release(struct device *dev, void *res)
  */
 struct iio_hw_consumer *devm_iio_hw_consumer_alloc(struct device *dev)
 {
-       struct iio_hw_consumer **ptr, *iio_hwc;
-
-       ptr = devres_alloc(devm_iio_hw_consumer_release, sizeof(*ptr),
-                          GFP_KERNEL);
-       if (!ptr)
-               return NULL;
+       struct iio_hw_consumer *iio_hwc;
+       int ret;
 
        iio_hwc = iio_hw_consumer_alloc(dev);
-       if (IS_ERR(iio_hwc)) {
-               devres_free(ptr);
-       } else {
-               *ptr = iio_hwc;
-               devres_add(dev, ptr);
-       }
+       if (IS_ERR(iio_hwc))
+               return iio_hwc;
+
+       ret = devm_add_action_or_reset(dev, devm_iio_hw_consumer_release,
+                                      iio_hwc);
+       if (ret)
+               return ERR_PTR(ret);
 
        return iio_hwc;
 }