@@ -1633,7 +1633,7 @@ static void emulated_link_detect(struct dc_link *link)
default:
DC_ERROR("Invalid connector type! signal:%d\n",
link->connector_signal);
- return;
+ goto err_sink_put;
}
sink_init_data.link = link;
@@ -1642,7 +1642,7 @@ static void emulated_link_detect(struct dc_link *link)
sink = dc_sink_create(&sink_init_data);
if (!sink) {
DC_ERROR("Failed to create sink!\n");
- return;
+ goto err_sink_put;
}
/* dc_sink_create returns a new reference */
@@ -1655,6 +1655,9 @@ static void emulated_link_detect(struct dc_link *link)
if (edid_status != EDID_OK)
DC_ERROR("Failed to read EDID");
+err_sink_put:
+ if (prev_sink != NULL)
+ dc_sink_release(prev_sink);
}