diff options
author | Andrey Grodzovsky <[email protected]> | 2016-05-25 16:45:43 -0400 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2016-06-15 11:14:36 +1000 |
commit | fd2d2bac6e79b0be91ab86a6075a0c46ffda658a (patch) | |
tree | 3ad900c62b1df4a0a8257247d49f00d54b5c9dd9 | |
parent | 93f55972bc0fef0e394bbed3d46dc06b9afd3d17 (diff) |
drm/dp/mst: Always clear proposed vcpi table for port.
Not clearing mst manager's proposed vcpis table for destroyed connectors when the manager is stopped leaves it pointing to unrefernced memory, this causes pagefault when the manager is restarted when plugging back a branch.
Fixes: 91a25e463130 ("drm/dp/mst: deallocate payload on port destruction")
Signed-off-by: Andrey Grodzovsky <[email protected]>
Reviewed-by: Lyude <[email protected]>
Cc: [email protected]
Cc: Mykola Lysenko <[email protected]>
Cc: Alex Deucher <[email protected]>
-rw-r--r-- | drivers/gpu/drm/drm_dp_mst_topology.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c index a13edf5de2d6..6537908050d7 100644 --- a/drivers/gpu/drm/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/drm_dp_mst_topology.c @@ -2927,11 +2927,9 @@ static void drm_dp_destroy_connector_work(struct work_struct *work) drm_dp_port_teardown_pdt(port, port->pdt); if (!port->input && port->vcpi.vcpi > 0) { - if (mgr->mst_state) { - drm_dp_mst_reset_vcpi_slots(mgr, port); - drm_dp_update_payload_part1(mgr); - drm_dp_mst_put_payload_id(mgr, port->vcpi.vcpi); - } + drm_dp_mst_reset_vcpi_slots(mgr, port); + drm_dp_update_payload_part1(mgr); + drm_dp_mst_put_payload_id(mgr, port->vcpi.vcpi); } kref_put(&port->kref, drm_dp_free_mst_port); |