]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/display/dp_mst: Fix down message handling after a packet reception error
authorImre Deak <imre.deak@intel.com>
Wed, 14 Dec 2022 18:42:57 +0000 (20:42 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 11 Mar 2023 12:55:42 +0000 (13:55 +0100)
commit 32b3552b598da956f4a16a53c9d3f064dbf57e1b upstream.

After an error during receiving a packet for a multi-packet DP MST
sideband message, the state tracking which packets have been received
already is not reset. This prevents the reception of subsequent down
messages (due to the pending message not yet completed with an
end-of-message-transfer packet).

Fix the above by resetting the reception state after a packet error.

Cc: Lyude Paul <lyude@redhat.com>
Cc: <stable@vger.kernel.org> # v3.17+
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221214184258.2869417-2-imre.deak@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/display/drm_dp_mst_topology.c

index 82d1473af2d91efebc63e576d7108615449658e1..d77858c7c4db9077a4c5f829d5aff52b940c02f6 100644 (file)
@@ -3859,7 +3859,7 @@ static int drm_dp_mst_handle_down_rep(struct drm_dp_mst_topology_mgr *mgr)
        struct drm_dp_sideband_msg_rx *msg = &mgr->down_rep_recv;
 
        if (!drm_dp_get_one_sb_msg(mgr, false, &mstb))
-               goto out;
+               goto out_clear_reply;
 
        /* Multi-packet message transmission, don't clear the reply */
        if (!msg->have_eomt)