summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorImre Deak <imre.deak@intel.com>2024-12-03 18:02:17 +0200
committerImre Deak <imre.deak@intel.com>2024-12-05 16:18:07 +0200
commita6fa67d26de385c3c7a23c1e109a0e23bfda4ec7 (patch)
treecd198d84543cbe1850648a466351c00aace36e71 /fs
parent86e8f94789dd6f3e705bfa821e1e416f97a2f863 (diff)
downloadlinux-a6fa67d26de385c3c7a23c1e109a0e23bfda4ec7.tar.gz
linux-a6fa67d26de385c3c7a23c1e109a0e23bfda4ec7.tar.bz2
linux-a6fa67d26de385c3c7a23c1e109a0e23bfda4ec7.zip
drm/dp_mst: Fix resetting msg rx state after topology removal
If the MST topology is removed during the reception of an MST down reply or MST up request sideband message, the drm_dp_mst_topology_mgr::up_req_recv/down_rep_recv states could be reset from one thread via drm_dp_mst_topology_mgr_set_mst(false), racing with the reading/parsing of the message from another thread via drm_dp_mst_handle_down_rep() or drm_dp_mst_handle_up_req(). The race is possible since the reader/parser doesn't hold any lock while accessing the reception state. This in turn can lead to a memory corruption in the reader/parser as described by commit bd2fccac61b4 ("drm/dp_mst: Fix MST sideband message body length check"). Fix the above by resetting the message reception state if needed before reading/parsing a message. Another solution would be to hold the drm_dp_mst_topology_mgr::lock for the whole duration of the message reception/parsing in drm_dp_mst_handle_down_rep() and drm_dp_mst_handle_up_req(), however this would require a bigger change. Since the fix is also needed for stable, opting for the simpler solution in this patch. Cc: Lyude Paul <lyude@redhat.com> Cc: <stable@vger.kernel.org> Fixes: 1d082618bbf3 ("drm/display/dp_mst: Fix down/up message handling after sink disconnect") Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13056 Reviewed-by: Lyude Paul <lyude@redhat.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241203160223.2926014-2-imre.deak@intel.com
Diffstat (limited to 'fs')
0 files changed, 0 insertions, 0 deletions