Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25d10185 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drm/msm/dsi-staging: fix memory leak issue in get modes call"

parents 8e49b57b 57643fc6
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -5397,13 +5397,13 @@ int dsi_display_get_modes(struct dsi_display *display,

	mutex_lock(&display->display_lock);

	if (display->modes)
		goto exit;

	rc = dsi_display_get_mode_count_no_lock(display, &total_mode_count);
	if (rc)
		goto error;

	/* free any previously probed modes */
	kfree(display->modes);

	display->modes = kcalloc(total_mode_count, sizeof(*display->modes),
			GFP_KERNEL);
	if (!display->modes) {
@@ -5482,6 +5482,7 @@ int dsi_display_get_modes(struct dsi_display *display,
		}
	}

exit:
	*out_modes = display->modes;
	rc = 0;

+7 −1
Original line number Diff line number Diff line
@@ -606,6 +606,7 @@ void dsi_connector_put_modes(struct drm_connector *connector,
{
	struct drm_display_mode *drm_mode;
	struct dsi_display_mode dsi_mode;
	struct dsi_display *dsi_display;

	if (!connector || !display)
		return;
@@ -614,6 +615,11 @@ void dsi_connector_put_modes(struct drm_connector *connector,
		convert_to_dsi_mode(drm_mode, &dsi_mode);
		dsi_display_put_mode(display, &dsi_mode);
	}

	/* free the display structure modes also */
	dsi_display = display;
	kfree(dsi_display->modes);
	dsi_display->modes = NULL;
}

int dsi_connector_get_modes(struct drm_connector *connector,