struct device_node *node)
 {
        struct fimc_is_sensor *sensor = &is->sensor[index];
+       struct device_node *ep, *port;
        u32 tmp = 0;
        int ret;
 
                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);
        if (ret < 0) {
                dev_err(&is->pdev->dev, "reg property not found at: %s\n",
-                                                        node->full_name);
+                                                        port->full_name);
+               of_node_put(port);
                return ret;
        }
 
+       of_node_put(port);
        sensor->i2c_bus = tmp - FIMC_INPUT_MIPI_CSI2_0;
        return 0;
 }