Commit 99681886 authored by Chris Wilson's avatar Chris Wilson Committed by Daniel Vetter

drm/i915: Avoid use-after-free of intel_encoder in intel_dp_connector_destrpy

The drm_dp_aux is associated with the intel_dp encoder and not the
connector. Since the encoder is destroyed before the connector,
attempting to free the drm_dp_aux from inside the connector cleanup
causes a use-after-free.

This was applied to the patch that CI was happy with, but in the
confusion of so many series trying to make CI happy, the unready
patch was plucked.

Fixes: c191eca1 ("drm/i915: Move intel_connector->unregister to connector->early_unregister")
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1466411357-730-1-git-send-email-chris@chris-wilson.co.uk
parent e63d87c0
...@@ -4463,8 +4463,6 @@ intel_dp_connector_destroy(struct drm_connector *connector) ...@@ -4463,8 +4463,6 @@ intel_dp_connector_destroy(struct drm_connector *connector)
if (!IS_ERR_OR_NULL(intel_connector->edid)) if (!IS_ERR_OR_NULL(intel_connector->edid))
kfree(intel_connector->edid); kfree(intel_connector->edid);
intel_dp_aux_fini(intel_attached_dp(connector));
/* Can't call is_edp() since the encoder may have been destroyed /* Can't call is_edp() since the encoder may have been destroyed
* already. */ * already. */
if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) if (connector->connector_type == DRM_MODE_CONNECTOR_eDP)
...@@ -4495,6 +4493,9 @@ void intel_dp_encoder_destroy(struct drm_encoder *encoder) ...@@ -4495,6 +4493,9 @@ void intel_dp_encoder_destroy(struct drm_encoder *encoder)
intel_dp->edp_notifier.notifier_call = NULL; intel_dp->edp_notifier.notifier_call = NULL;
} }
} }
intel_dp_aux_fini(intel_dp);
drm_encoder_cleanup(encoder); drm_encoder_cleanup(encoder);
kfree(intel_dig_port); kfree(intel_dig_port);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment