mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 12:30:53 +07:00
drm/dp/mst: take lock around looking up the branch device on hpd irq
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>
This commit is contained in:
parent
9254ec496a
commit
9eb1e57f56
@ -1163,6 +1163,8 @@ static struct drm_dp_mst_branch *drm_dp_get_mst_branch_device(struct drm_dp_mst_
|
|||||||
struct drm_dp_mst_port *port;
|
struct drm_dp_mst_port *port;
|
||||||
int i;
|
int i;
|
||||||
/* find the port by iterating down */
|
/* find the port by iterating down */
|
||||||
|
|
||||||
|
mutex_lock(&mgr->lock);
|
||||||
mstb = mgr->mst_primary;
|
mstb = mgr->mst_primary;
|
||||||
|
|
||||||
for (i = 0; i < lct - 1; i++) {
|
for (i = 0; i < lct - 1; i++) {
|
||||||
@ -1182,6 +1184,7 @@ static struct drm_dp_mst_branch *drm_dp_get_mst_branch_device(struct drm_dp_mst_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
kref_get(&mstb->kref);
|
kref_get(&mstb->kref);
|
||||||
|
mutex_unlock(&mgr->lock);
|
||||||
return mstb;
|
return mstb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user