drm/i915: Keep malloc references to MST ports
authorLyude Paul <lyude@redhat.com>
Fri, 11 Jan 2019 00:53:33 +0000 (19:53 -0500)
committerLyude Paul <lyude@redhat.com>
Fri, 11 Jan 2019 01:12:23 +0000 (20:12 -0500)
So that the ports stay around until we've destroyed the connectors, in
order to ensure that we don't pass an invalid pointer to any MST helpers
once we introduce the new MST VCPI helpers.

Changes since v1:
* Move drm_dp_mst_get_port_malloc() to where we assign
  intel_connector->port - danvet

Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Daniel Vetter <daniel@ffwll.ch>
Cc: David Airlie <airlied@redhat.com>
Cc: Jerry Zuo <Jerry.Zuo@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Juston Li <juston.li@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190111005343.17443-11-lyude@redhat.com
drivers/gpu/drm/i915/intel_connector.c
drivers/gpu/drm/i915/intel_dp_mst.c

index 18e370f607bcc2e50105c5854b70d61611c22709..37d2c644f4b8b4d6fd441535bedc5ae729db0841 100644 (file)
@@ -95,6 +95,10 @@ void intel_connector_destroy(struct drm_connector *connector)
        intel_panel_fini(&intel_connector->panel);
 
        drm_connector_cleanup(connector);
+
+       if (intel_connector->port)
+               drm_dp_mst_put_port_malloc(intel_connector->port);
+
        kfree(connector);
 }
 
index f05427b74e348465a6bb162ede4e52d5ef59b2a5..631fd1537252427a25109793e9fbdc1d09334419 100644 (file)
@@ -457,6 +457,7 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo
        intel_connector->get_hw_state = intel_dp_mst_get_hw_state;
        intel_connector->mst_port = intel_dp;
        intel_connector->port = port;
+       drm_dp_mst_get_port_malloc(port);
 
        connector = &intel_connector->base;
        ret = drm_connector_init(dev, connector, &intel_dp_mst_connector_funcs,