]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/dp/mst: take lock around looking up the branch device on hpd irq
authorDave Airlie <airlied@redhat.com>
Mon, 22 Jun 2015 04:40:44 +0000 (14:40 +1000)
committerSasha Levin <sasha.levin@oracle.com>
Sun, 5 Jul 2015 14:12:48 +0000 (10:12 -0400)
[ Upstream commit 9eb1e57f564d4e6e10991402726cc83fe0b9172f ]

If we are doing an MST transaction and we've gotten HPD and we
lookup the device from the incoming msg, we should take the mgr
lock around it, so that mst_primary and mstb->ports are valid.

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: stable@vger.kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
drivers/gpu/drm/drm_dp_mst_topology.c

index 34b19497b2e4567cebf068629aa47924ec0b1234..1f5e42a1f5b43377b01eb9e18626366293972ca3 100644 (file)
@@ -1152,6 +1152,8 @@ static struct drm_dp_mst_branch *drm_dp_get_mst_branch_device(struct drm_dp_mst_
        struct drm_dp_mst_port *port;
        int i;
        /* find the port by iterating down */
+
+       mutex_lock(&mgr->lock);
        mstb = mgr->mst_primary;
 
        for (i = 0; i < lct - 1; i++) {
@@ -1171,6 +1173,7 @@ static struct drm_dp_mst_branch *drm_dp_get_mst_branch_device(struct drm_dp_mst_
                }
        }
        kref_get(&mstb->kref);
+       mutex_unlock(&mgr->lock);
        return mstb;
 }