diff mbox

i2c: add missing of_node_put in i2c_mux_del_adapters

Message ID 1488527831-53733-1-git-send-email-qi.hou@windriver.com
State Accepted
Headers show

Commit Message

Qi Hou March 3, 2017, 7:57 a.m. UTC
Refcount of of_node is increased with of_node_get() in i2c_mux_add_adapter().
It must be decreased with of_node_put() in i2c_mux_del_adapters().

Signe-off-by: Qi Hou <qi.hou@windriver.com>
Reviewed-by: Zhang Xiao <xiao.zhang@windriver.com>
Acked-by: Peter Rosin <peda@axentia.se>
---
 drivers/i2c/i2c-mux.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Wolfram Sang March 9, 2017, 2:40 p.m. UTC | #1
On Fri, Mar 03, 2017 at 03:57:11PM +0800, Qi Hou wrote:
> Refcount of of_node is increased with of_node_get() in i2c_mux_add_adapter().
> It must be decreased with of_node_put() in i2c_mux_del_adapters().
> 
> Signe-off-by: Qi Hou <qi.hou@windriver.com>
> Reviewed-by: Zhang Xiao <xiao.zhang@windriver.com>
> Acked-by: Peter Rosin <peda@axentia.se>

Applied to for-current, thanks!
Wolfram Sang March 9, 2017, 3:38 p.m. UTC | #2
On Thu, Mar 09, 2017 at 03:40:33PM +0100, Wolfram Sang wrote:
> On Fri, Mar 03, 2017 at 03:57:11PM +0800, Qi Hou wrote:
> > Refcount of of_node is increased with of_node_get() in i2c_mux_add_adapter().
> > It must be decreased with of_node_put() in i2c_mux_del_adapters().
> > 
> > Signe-off-by: Qi Hou <qi.hou@windriver.com>
> > Reviewed-by: Zhang Xiao <xiao.zhang@windriver.com>
> > Acked-by: Peter Rosin <peda@axentia.se>
> 
> Applied to for-current, thanks!

For completeness, I reverted this patch and merged the fixed version
from Peter instead. Thanks Peter for the heads up!
diff mbox

Patch

diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c
index 83768e8..2178266 100644
--- a/drivers/i2c/i2c-mux.c
+++ b/drivers/i2c/i2c-mux.c
@@ -429,6 +429,7 @@  void i2c_mux_del_adapters(struct i2c_mux_core *muxc)
 	while (muxc->num_adapters) {
 		struct i2c_adapter *adap = muxc->adapter[--muxc->num_adapters];
 		struct i2c_mux_priv *priv = adap->algo_data;
+		struct device_node *np = adap->dev.of_node;
 
 		muxc->adapter[muxc->num_adapters] = NULL;
 
@@ -438,6 +439,7 @@  void i2c_mux_del_adapters(struct i2c_mux_core *muxc)
 
 		sysfs_remove_link(&priv->adap.dev.kobj, "mux_device");
 		i2c_del_adapter(adap);
+		of_node_put(np);
 		kfree(priv);
 	}
 }