static int hdmi_get_phy_io(struct hdmi_context *hdata)
 {
        const char *compatible_str = "samsung,exynos4212-hdmiphy";
-       struct device_node *np;
-       int ret = 0;
+       struct device_node *np __free(device_node) =
+               of_find_compatible_node(NULL, NULL, compatible_str);
 
-       np = of_find_compatible_node(NULL, NULL, compatible_str);
        if (!np) {
                np = of_parse_phandle(hdata->dev->of_node, "phy", 0);
                if (!np) {
                if (!hdata->regs_hdmiphy) {
                        DRM_DEV_ERROR(hdata->dev,
                                      "failed to ioremap hdmi phy\n");
-                       ret = -ENOMEM;
-                       goto out;
+                       return -ENOMEM;
                }
        } else {
                hdata->hdmiphy_port = of_find_i2c_device_by_node(np);
                if (!hdata->hdmiphy_port) {
                        DRM_INFO("Failed to get hdmi phy i2c client\n");
-                       ret = -EPROBE_DEFER;
-                       goto out;
+                       return -EPROBE_DEFER;
                }
        }
 
-out:
-       of_node_put(np);
-       return ret;
+       return 0;
 }
 
 static int hdmi_probe(struct platform_device *pdev)