blob: 9f8a70d770046a14090043ab2c3ae5172b28a879 [file] [log] [blame]
From: Zijun Hu <quic_zijuhu@quicinc.com>
Subject: lib: devres: simplify API devm_iounmap() implementation
Date: Wed, 18 Sep 2024 22:48:13 +0800
Patch series "lib: devres: Simplify both API devm_iounmap() and
devm_ioport_unmap() implementation".
This patch series is to simplify implementation for both API
devm_iounmap() and devm_ioport_unmap().
This patch (of 2):
Simplify devm_iounmap() implementation by dedicated API devres_release()
compared with current solution, namely, devres_destroy() + iounmap()
devres_release() has the following advantages:
- it is simpler if devm_iounmap()'s parameter @addr is valid, namely
@addr was ever returned by one of devm_ioremap() variants.
- it can avoid unnecessary iounmap(@addr) if @addr is not valid.
Link: https://lkml.kernel.org/r/20240918-fix_lib_devres-v1-0-e696ab5486e6@quicinc.com
Link: https://lkml.kernel.org/r/20240918-fix_lib_devres-v1-1-e696ab5486e6@quicinc.com
Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Zijun Hu <zijun_hu@icloud.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
lib/devres.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- a/lib/devres.c~lib-devres-simplify-api-devm_iounmap-implementation
+++ a/lib/devres.c
@@ -115,9 +115,8 @@ EXPORT_SYMBOL(devm_ioremap_wc);
*/
void devm_iounmap(struct device *dev, void __iomem *addr)
{
- WARN_ON(devres_destroy(dev, devm_ioremap_release, devm_ioremap_match,
+ WARN_ON(devres_release(dev, devm_ioremap_release, devm_ioremap_match,
(__force void *)addr));
- iounmap(addr);
}
EXPORT_SYMBOL(devm_iounmap);
_