Commit a1526878 authored by Alex Hung's avatar Alex Hung Committed by Alex Deucher

drm/amd/display: Avoid overflow assignment in link_dp_cts

sampling_rate is an uint8_t but is assigned an unsigned int, and thus it
can overflow. As a result, sampling_rate is changed to uint32_t.

Similarly, LINK_QUAL_PATTERN_SET has a size of 2 bits, and it should
only be assigned to a value less or equal than 4.

This fixes 2 INTEGER_OVERFLOW issues reported by Coverity.
Signed-off-by: default avatarAlex Hung <alex.hung@amd.com>
Reviewed-by: default avatarWenjing Liu <wenjing.liu@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarRodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent cead9ac8
...@@ -727,7 +727,7 @@ struct dp_audio_test_data_flags { ...@@ -727,7 +727,7 @@ struct dp_audio_test_data_flags {
struct dp_audio_test_data { struct dp_audio_test_data {
struct dp_audio_test_data_flags flags; struct dp_audio_test_data_flags flags;
uint8_t sampling_rate; uint32_t sampling_rate;
uint8_t channel_count; uint8_t channel_count;
uint8_t pattern_type; uint8_t pattern_type;
uint8_t pattern_period[8]; uint8_t pattern_period[8];
......
...@@ -775,6 +775,7 @@ bool dp_set_test_pattern( ...@@ -775,6 +775,7 @@ bool dp_set_test_pattern(
core_link_read_dpcd(link, DP_TRAINING_PATTERN_SET, core_link_read_dpcd(link, DP_TRAINING_PATTERN_SET,
&training_pattern.raw, &training_pattern.raw,
sizeof(training_pattern)); sizeof(training_pattern));
if (pattern <= PHY_TEST_PATTERN_END_DP11)
training_pattern.v1_3.LINK_QUAL_PATTERN_SET = pattern; training_pattern.v1_3.LINK_QUAL_PATTERN_SET = pattern;
core_link_write_dpcd(link, DP_TRAINING_PATTERN_SET, core_link_write_dpcd(link, DP_TRAINING_PATTERN_SET,
&training_pattern.raw, &training_pattern.raw,
......
...@@ -76,6 +76,7 @@ enum dpcd_phy_test_patterns { ...@@ -76,6 +76,7 @@ enum dpcd_phy_test_patterns {
PHY_TEST_PATTERN_D10_2, PHY_TEST_PATTERN_D10_2,
PHY_TEST_PATTERN_SYMBOL_ERROR, PHY_TEST_PATTERN_SYMBOL_ERROR,
PHY_TEST_PATTERN_PRBS7, PHY_TEST_PATTERN_PRBS7,
PHY_TEST_PATTERN_END_DP11 = PHY_TEST_PATTERN_PRBS7,
PHY_TEST_PATTERN_80BIT_CUSTOM,/* For DP1.2 only */ PHY_TEST_PATTERN_80BIT_CUSTOM,/* For DP1.2 only */
PHY_TEST_PATTERN_CP2520_1, PHY_TEST_PATTERN_CP2520_1,
PHY_TEST_PATTERN_CP2520_2, PHY_TEST_PATTERN_CP2520_2,
......
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