diff --git a/drivers/media/platform/samsung/exynos4-is/fimc-is.c b/drivers/media/platform/samsung/exynos4-is/fimc-is.c index 14d84cc96831..b7d9bfedd590 100644 --- a/drivers/media/platform/samsung/exynos4-is/fimc-is.c +++ b/drivers/media/platform/samsung/exynos4-is/fimc-is.c @@ -200,21 +200,19 @@ static int fimc_is_parse_sensor_config(struct fimc_is *is, unsigned int index, static int fimc_is_register_subdevs(struct fimc_is *is) { - struct device_node *i2c_bus; int ret, index = 0; ret = fimc_isp_subdev_create(&is->isp); if (ret < 0) return ret; - for_each_compatible_node(i2c_bus, NULL, "samsung,exynos4212-i2c-isp") { + for_each_compatible_node_scoped(i2c_bus, NULL, "samsung,exynos4212-i2c-isp") { for_each_available_child_of_node_scoped(i2c_bus, child) { ret = fimc_is_parse_sensor_config(is, index, child); - if (ret < 0 || index >= FIMC_IS_SENSORS_NUM) { - of_node_put(i2c_bus); + if (ret < 0 || index >= FIMC_IS_SENSORS_NUM) return ret; - } + index++; } }