diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3772-drm-amd-display-Check-msg-size-before-starting-aux-t.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3772-drm-amd-display-Check-msg-size-before-starting-aux-t.patch | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3772-drm-amd-display-Check-msg-size-before-starting-aux-t.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3772-drm-amd-display-Check-msg-size-before-starting-aux-t.patch new file mode 100644 index 00000000..b256922d --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3772-drm-amd-display-Check-msg-size-before-starting-aux-t.patch @@ -0,0 +1,35 @@ +From d9275251d3eb9cbc978263f54b736d66a958ed46 Mon Sep 17 00:00:00 2001 +From: Shirish S <shirish.s@amd.com> +Date: Tue, 13 Mar 2018 11:55:11 +0530 +Subject: [PATCH 3772/4131] drm/amd/display: Check msg->size before starting + aux transfer + +This patch adds an essential check related to the size of the +payload to be transferred via aux channel. + +Without this check dal_ddc_service_read_dpcd_data() is fed with +inappropriate payload size leading to deadlocks. + +Signed-off-by: Shirish S <shirish.s@amd.com> +Reviewed-by: Harry Wentland <harry.wentland@amd.com> +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +index c612329..b88b0e4 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +@@ -84,6 +84,9 @@ static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux, + enum ddc_result res; + ssize_t read_bytes; + ++ if (WARN_ON(msg->size > 16)) ++ return -E2BIG; ++ + switch (msg->request & ~DP_AUX_I2C_MOT) { + case DP_AUX_NATIVE_READ: + read_bytes = dal_ddc_service_read_dpcd_data( +-- +2.7.4 + |