Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa...
[linux-2.6-microblaze.git] / drivers / gpu / drm / drm_dp_mst_topology.c
index 09b3228..67dd72e 100644 (file)
@@ -4308,11 +4308,11 @@ bool drm_dp_mst_allocate_vcpi(struct drm_dp_mst_topology_mgr *mgr,
 {
        int ret;
 
-       port = drm_dp_mst_topology_get_port_validated(mgr, port);
-       if (!port)
+       if (slots < 0)
                return false;
 
-       if (slots < 0)
+       port = drm_dp_mst_topology_get_port_validated(mgr, port);
+       if (!port)
                return false;
 
        if (port->vcpi.vcpi > 0) {
@@ -4328,6 +4328,7 @@ bool drm_dp_mst_allocate_vcpi(struct drm_dp_mst_topology_mgr *mgr,
        if (ret) {
                DRM_DEBUG_KMS("failed to init vcpi slots=%d max=63 ret=%d\n",
                              DIV_ROUND_UP(pbn, mgr->pbn_div), ret);
+               drm_dp_mst_topology_put_port(port);
                goto out;
        }
        DRM_DEBUG_KMS("initing vcpi for pbn=%d slots=%d\n",
@@ -5039,8 +5040,8 @@ int drm_dp_mst_add_affected_dsc_crtcs(struct drm_atomic_state *state, struct drm
 
                crtc = conn_state->crtc;
 
-               if (WARN_ON(!crtc))
-                       return -EINVAL;
+               if (!crtc)
+                       continue;
 
                if (!drm_dp_mst_dsc_aux_for_port(pos->port))
                        continue;