Hi Javier, Am 23.03.2016 um 17:15 schrieb Javier Martinez Canillas: > The same struct device_node * is used for looking up the I2C sensor, OF > graph endpoint and port. So the reference count is incremented but not > decremented for the endpoint and port nodes. > > Fix this by having separate pointers for each node looked up. > > Signed-off-by: Javier Martinez Canillas <javier@xxxxxxxxxxxxxxx> [...] > diff --git a/drivers/media/platform/exynos4-is/fimc-is.c b/drivers/media/platform/exynos4-is/fimc-is.c > index 979c388ebf60..0b04a5d25187 100644 > --- a/drivers/media/platform/exynos4-is/fimc-is.c > +++ b/drivers/media/platform/exynos4-is/fimc-is.c > @@ -165,6 +165,7 @@ static int fimc_is_parse_sensor_config(struct fimc_is *is, unsigned int index, > struct device_node *node) > { > struct fimc_is_sensor *sensor = &is->sensor[index]; > + struct device_node *ep, *port; > u32 tmp = 0; > int ret; > > @@ -175,16 +176,18 @@ static int fimc_is_parse_sensor_config(struct fimc_is *is, unsigned int index, > return -EINVAL; > } > > - node = of_graph_get_next_endpoint(node, NULL); > - if (!node) > + ep = of_graph_get_next_endpoint(node, NULL); > + if (!ep) > return -ENXIO; > > - node = of_graph_get_remote_port(node); > - if (!node) > + port = of_graph_get_remote_port(ep); > + of_node_put(ep); > + if (!port) > return -ENXIO; > > /* Use MIPI-CSIS channel id to determine the ISP I2C bus index. */ > - ret = of_property_read_u32(node, "reg", &tmp); > + ret = of_property_read_u32(port, "reg", &tmp); > + of_node_put(port); > if (ret < 0) { > dev_err(&is->pdev->dev, "reg property not found at: %s\n", > node->full_name); port->full_name. You'll need to defer the of_node_put(port) then. Regards, Andreas -- SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Felix Imendörffer, Jane Smithard, Graham Norton; HRB 21284 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html