summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2015-06-22 14:40:44 +1000
committerSasha Levin <sasha.levin@oracle.com>2015-07-05 10:12:48 -0400
commitc44ed568ae2ef49bb72d55c8a12e6ca19758b845 (patch)
tree9798fac99f92c5c8dd8cd3602b91b9b2631b88c6 /drivers/gpu
parent0e266aadab119ef07719c6ec92ed720027379bab (diff)
downloadlwn-c44ed568ae2ef49bb72d55c8a12e6ca19758b845.tar.gz
lwn-c44ed568ae2ef49bb72d55c8a12e6ca19758b845.zip
drm/dp/mst: take lock around looking up the branch device on hpd irq
[ 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>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/drm_dp_mst_topology.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
index 34b19497b2e4..1f5e42a1f5b4 100644
--- a/drivers/gpu/drm/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
@@ -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;
}