| 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); |
| |
| _ |