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: c191eca110a3 ("drm/i915: Move intel_connector->unregister to connector->early_unregister")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1466411357-730-1-git-send-email-chris@chris-wilson.co.uk
 
        if (!IS_ERR_OR_NULL(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
         * already. */
        if (connector->connector_type == DRM_MODE_CONNECTOR_eDP)
                        intel_dp->edp_notifier.notifier_call = NULL;
                }
        }
+
+       intel_dp_aux_fini(intel_dp);
+
        drm_encoder_cleanup(encoder);
        kfree(intel_dig_port);
 }