Commit 3383334a authored by Imre Deak's avatar Imre Deak Committed by Greg Kroah-Hartman

drm/mst: Fix error handling during MST sideband message reception

commit 448421b5 upstream.

Handle any error due to partial reads, timeouts etc. to avoid parsing
uninitialized data subsequently. Also bail out if the parsing itself
fails.

Cc: Dave Airlie <airlied@redhat.com>
Cc: Lyude <lyude@redhat.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
Reviewed-by: default avatarLyude <lyude@redhat.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20170719114330.26540-2-imre.deak@intel.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent af7b187f
...@@ -2195,11 +2195,17 @@ static void drm_dp_get_one_sb_msg(struct drm_dp_mst_topology_mgr *mgr, bool up) ...@@ -2195,11 +2195,17 @@ static void drm_dp_get_one_sb_msg(struct drm_dp_mst_topology_mgr *mgr, bool up)
ret = drm_dp_dpcd_read(mgr->aux, basereg + curreply, ret = drm_dp_dpcd_read(mgr->aux, basereg + curreply,
replyblock, len); replyblock, len);
if (ret != len) { if (ret != len) {
DRM_DEBUG_KMS("failed to read a chunk\n"); DRM_DEBUG_KMS("failed to read a chunk (len %d, ret %d)\n",
len, ret);
return;
} }
ret = drm_dp_sideband_msg_build(msg, replyblock, len, false); ret = drm_dp_sideband_msg_build(msg, replyblock, len, false);
if (ret == false) if (!ret) {
DRM_DEBUG_KMS("failed to build sideband msg\n"); DRM_DEBUG_KMS("failed to build sideband msg\n");
return;
}
curreply += len; curreply += len;
replylen -= len; replylen -= len;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment