<div dir="ltr"><div dir="ltr"><div>Hey Tian,<br></div><br></div><div>Thanks for having a look at cleanup patches.<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 8 Apr 2021 at 04:06, Tian Tao <<a href="mailto:tiantao6@hisilicon.com">tiantao6@hisilicon.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Use devm_add_action_or_reset() instead of devres_alloc() and<br>
devres_add(), which works the same. This will simplify the<br>
code. There is no functional changes.<br>
<br>
Signed-off-by: Tian Tao <<a href="mailto:tiantao6@hisilicon.com" target="_blank">tiantao6@hisilicon.com</a>><br>
Signed-off-by: Yicong Yang <<a href="mailto:yangyicong@hisilicon.com" target="_blank">yangyicong@hisilicon.com</a>><br>
---<br>
drivers/gpu/drm/bridge/panel.c | 27 +++++++++++----------------<br>
1 file changed, 11 insertions(+), 16 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c<br>
index c916f4b..e5ddefb 100644<br>
--- a/drivers/gpu/drm/bridge/panel.c<br>
+++ b/drivers/gpu/drm/bridge/panel.c<br>
@@ -250,11 +250,9 @@ void drm_panel_bridge_remove(struct drm_bridge *bridge)<br>
}<br>
EXPORT_SYMBOL(drm_panel_bridge_remove);<br>
<br>
-static void devm_drm_panel_bridge_release(struct device *dev, void *res)<br>
+static void devm_drm_panel_bridge_release(void *bridge)<br>
{<br>
- struct drm_bridge **bridge = res;<br>
-<br>
- drm_panel_bridge_remove(*bridge);<br>
+ drm_panel_bridge_remove(bridge);<br>
}<br>
<br>
/**<br>
@@ -295,20 +293,17 @@ struct drm_bridge *devm_drm_panel_bridge_add_typed(struct device *dev,<br>
struct drm_panel *panel,<br>
u32 connector_type)<br>
{<br>
- struct drm_bridge **ptr, *bridge;<br>
-<br>
- ptr = devres_alloc(devm_drm_panel_bridge_release, sizeof(*ptr),<br>
- GFP_KERNEL);<br>
- if (!ptr)<br>
- return ERR_PTR(-ENOMEM);<br>
+ struct drm_bridge *bridge;<br>
+ int ret;<br>
<br>
bridge = drm_panel_bridge_add_typed(panel, connector_type);<br>
- if (!IS_ERR(bridge)) {<br>
- *ptr = bridge;<br>
- devres_add(dev, ptr);<br>
- } else {<br>
- devres_free(ptr);<br>
- }<br>
+ if (IS_ERR(bridge))<br>
+ return bridge;<br>
+<br>
+ ret = devm_add_action_or_reset(dev, devm_drm_panel_bridge_release,<br>
+ bridge);<br>
+ if (ret)<br>
+ return ERR_PTR(ret);<br>
<br>
return bridge;<br>
}<br><br></blockquote><div> </div><div>I'm not crazy about this change. In my mind it is harder to read & understand than the current solution. If anyone else feels otherwise, I'm open to have my mind changed.<br><br><br></div><div>Rob.<br></div></div></div>