All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yicong Yang <yangyicong@hisilicon.com>
To: <jic23@kernel.org>, <linux-iio@vger.kernel.org>
Cc: <lars@metafoo.de>, <Michael.Hennerich@analog.com>,
	<pmeerw@pmeerw.net>, <prime.zeng@huawei.com>,
	<tiantao6@hisilicon.com>, <yangyicong@hisilicon.com>
Subject: [PATCH 5/7] iio: core: simplify some devm functions
Date: Thu, 8 Apr 2021 19:38:14 +0800	[thread overview]
Message-ID: <1617881896-3164-6-git-send-email-yangyicong@hisilicon.com> (raw)
In-Reply-To: <1617881896-3164-1-git-send-email-yangyicong@hisilicon.com>

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>
---
 drivers/iio/industrialio-core.c | 43 +++++++++++++++--------------------------
 1 file changed, 16 insertions(+), 27 deletions(-)

diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 7db761a..2dfbed3 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -1627,9 +1627,9 @@ void iio_device_free(struct iio_dev *dev)
 }
 EXPORT_SYMBOL(iio_device_free);
 
-static void devm_iio_device_release(struct device *dev, void *res)
+static void devm_iio_device_release(void *iio_dev)
 {
-	iio_device_free(*(struct iio_dev **)res);
+	iio_device_free(iio_dev);
 }
 
 /**
@@ -1645,20 +1645,17 @@ static void devm_iio_device_release(struct device *dev, void *res)
  */
 struct iio_dev *devm_iio_device_alloc(struct device *parent, int sizeof_priv)
 {
-	struct iio_dev **ptr, *iio_dev;
-
-	ptr = devres_alloc(devm_iio_device_release, sizeof(*ptr),
-			   GFP_KERNEL);
-	if (!ptr)
-		return NULL;
+	struct iio_dev *iio_dev;
+	int ret;
 
 	iio_dev = iio_device_alloc(parent, sizeof_priv);
-	if (iio_dev) {
-		*ptr = iio_dev;
-		devres_add(parent, ptr);
-	} else {
-		devres_free(ptr);
-	}
+	if (!iio_dev)
+		return iio_dev;
+
+	ret = devm_add_action_or_reset(parent, devm_iio_device_release,
+				       iio_dev);
+	if (ret)
+		return ERR_PTR(ret);
 
 	return iio_dev;
 }
@@ -1889,29 +1886,21 @@ void iio_device_unregister(struct iio_dev *indio_dev)
 }
 EXPORT_SYMBOL(iio_device_unregister);
 
-static void devm_iio_device_unreg(struct device *dev, void *res)
+static void devm_iio_device_unreg(void *indio_dev)
 {
-	iio_device_unregister(*(struct iio_dev **)res);
+	iio_device_unregister(indio_dev);
 }
 
 int __devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev,
 			       struct module *this_mod)
 {
-	struct iio_dev **ptr;
 	int ret;
 
-	ptr = devres_alloc(devm_iio_device_unreg, sizeof(*ptr), GFP_KERNEL);
-	if (!ptr)
-		return -ENOMEM;
-
-	*ptr = indio_dev;
 	ret = __iio_device_register(indio_dev, this_mod);
-	if (!ret)
-		devres_add(dev, ptr);
-	else
-		devres_free(ptr);
+	if (ret)
+		return ret;
 
-	return ret;
+	return devm_add_action_or_reset(dev, devm_iio_device_unreg, indio_dev);
 }
 EXPORT_SYMBOL_GPL(__devm_iio_device_register);
 
-- 
2.8.1


  parent reply	other threads:[~2021-04-08 11:41 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-08 11:38 [PATCH 0/7] Simplify codes with devm_add_action_or_reset Yicong Yang
2021-04-08 11:38 ` [PATCH 1/7] iio: adc: adi-axi-adc: simplify devm_adi_axi_adc_conv_register Yicong Yang
2021-04-08 13:00   ` Alexandru Ardelean
2021-04-08 13:04   ` Alexandru Ardelean
2021-04-09  7:39     ` Yicong Yang
2021-04-11 14:12   ` Jonathan Cameron
2021-04-12  9:10     ` Yicong Yang
2021-04-24 12:31       ` Jonathan Cameron
2021-04-08 11:38 ` [PATCH 2/7] iio: buffer-dmaengine: simplify __devm_iio_dmaengine_buffer_free Yicong Yang
2021-04-24 12:33   ` Jonathan Cameron
2021-04-08 11:38 ` [PATCH 3/7] iio: hw_consumer: simplify devm_iio_hw_consumer_alloc Yicong Yang
2021-04-24 13:56   ` Jonathan Cameron
2021-04-08 11:38 ` [PATCH 4/7] iio: triggered-buffer: simplify devm_iio_triggered_buffer_setup_ext Yicong Yang
2021-04-11 14:16   ` Jonathan Cameron
2021-04-12  9:05     ` Yicong Yang
2021-04-24 13:59       ` Jonathan Cameron
2021-04-08 11:38 ` Yicong Yang [this message]
2021-04-08 13:09   ` [PATCH 5/7] iio: core: simplify some devm functions Alexandru Ardelean
2021-04-09  7:21     ` Yicong Yang
2021-04-09  9:19       ` Andy Shevchenko
2021-04-09  9:41         ` Yicong Yang
2021-04-09  9:55           ` Andy Shevchenko
2021-04-09 13:05             ` Yicong Yang
2021-04-24 14:04               ` Jonathan Cameron
2021-04-08 11:38 ` [PATCH 6/7] iio: trigger: simplify __devm_iio_trigger_register Yicong Yang
2021-04-24 14:05   ` Jonathan Cameron
2021-04-08 11:38 ` [PATCH 7/7] iio: inkern: simplify some devm functions Yicong Yang
2021-04-24 14:12   ` Jonathan Cameron
2021-04-08 13:14 ` [PATCH 0/7] Simplify codes with devm_add_action_or_reset Alexandru Ardelean
2021-04-09  6:58 ` Lars-Peter Clausen
2021-04-09  7:27 ` Sa, Nuno
2021-04-09  9:17 ` Andy Shevchenko
2021-04-11 14:21 ` Jonathan Cameron
2021-04-24 14:15   ` Jonathan Cameron
2021-04-25  9:13     ` Yicong Yang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1617881896-3164-6-git-send-email-yangyicong@hisilicon.com \
    --to=yangyicong@hisilicon.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=pmeerw@pmeerw.net \
    --cc=prime.zeng@huawei.com \
    --cc=tiantao6@hisilicon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.