Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 448421b5 authored by Imre Deak's avatar Imre Deak Committed by Daniel Vetter
Browse files

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



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>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20170719114330.26540-2-imre.deak@intel.com
parent ef434a0c
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -2196,11 +2196,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,
				    replyblock, 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);
		if (ret == false)
		if (!ret) {
			DRM_DEBUG_KMS("failed to build sideband msg\n");
			return;
		}

		curreply += len;
		replylen -= len;
	}