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

Commit 47aaaec8 authored by Tomi Valkeinen's avatar Tomi Valkeinen Committed by Sean Paul
Browse files

drm/omap: handle alloc failures in omap_connector



Handle memory allocation failures in omap_connector to avoid NULL
derefs.

Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180502091159.7071-5-tomi.valkeinen@ti.com


Reviewed-by: default avatarBenoit Parrot <bparrot@ti.com>
Reviewed-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
parent 7f26eee5
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -121,6 +121,9 @@ static int omap_connector_get_modes(struct drm_connector *connector)
	if (dssdrv->read_edid) {
		void *edid = kzalloc(MAX_EDID, GFP_KERNEL);

		if (!edid)
			return 0;

		if ((dssdrv->read_edid(dssdev, edid, MAX_EDID) > 0) &&
				drm_edid_is_valid(edid)) {
			drm_mode_connector_update_edid_property(
@@ -139,6 +142,9 @@ static int omap_connector_get_modes(struct drm_connector *connector)
		struct drm_display_mode *mode = drm_mode_create(dev);
		struct videomode vm = {0};

		if (!mode)
			return 0;

		dssdrv->get_timings(dssdev, &vm);

		drm_display_mode_from_videomode(&vm, mode);
@@ -200,6 +206,10 @@ static int omap_connector_mode_valid(struct drm_connector *connector,
	if (!r) {
		/* check if vrefresh is still valid */
		new_mode = drm_mode_duplicate(dev, mode);

		if (!new_mode)
			return MODE_BAD;

		new_mode->clock = vm.pixelclock / 1000;
		new_mode->vrefresh = 0;
		if (mode->vrefresh == drm_mode_vrefresh(new_mode))