Commit 2a5626ee authored by Alex Hung's avatar Alex Hung Committed by Alex Deucher

drm/amd/display: Check gpio_id before used as array index

[WHY & HOW]
GPIO_ID_UNKNOWN (-1) is not a valid value for array index and therefore
should be checked in advance.

This fixes 5 OVERRUN issues reported by Coverity.
Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
Acked-by: default avatarTom Chung <chiahsuan.chung@amd.com>
Signed-off-by: default avatarAlex Hung <alex.hung@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 687fe329
...@@ -239,6 +239,9 @@ static bool is_pin_busy( ...@@ -239,6 +239,9 @@ static bool is_pin_busy(
enum gpio_id id, enum gpio_id id,
uint32_t en) uint32_t en)
{ {
if (id == GPIO_ID_UNKNOWN)
return false;
return service->busyness[id][en]; return service->busyness[id][en];
} }
...@@ -247,6 +250,9 @@ static void set_pin_busy( ...@@ -247,6 +250,9 @@ static void set_pin_busy(
enum gpio_id id, enum gpio_id id,
uint32_t en) uint32_t en)
{ {
if (id == GPIO_ID_UNKNOWN)
return;
service->busyness[id][en] = true; service->busyness[id][en] = true;
} }
...@@ -255,6 +261,9 @@ static void set_pin_free( ...@@ -255,6 +261,9 @@ static void set_pin_free(
enum gpio_id id, enum gpio_id id,
uint32_t en) uint32_t en)
{ {
if (id == GPIO_ID_UNKNOWN)
return;
service->busyness[id][en] = false; service->busyness[id][en] = false;
} }
...@@ -263,7 +272,7 @@ enum gpio_result dal_gpio_service_lock( ...@@ -263,7 +272,7 @@ enum gpio_result dal_gpio_service_lock(
enum gpio_id id, enum gpio_id id,
uint32_t en) uint32_t en)
{ {
if (!service->busyness[id]) { if (id != GPIO_ID_UNKNOWN && !service->busyness[id]) {
ASSERT_CRITICAL(false); ASSERT_CRITICAL(false);
return GPIO_RESULT_OPEN_FAILED; return GPIO_RESULT_OPEN_FAILED;
} }
...@@ -277,7 +286,7 @@ enum gpio_result dal_gpio_service_unlock( ...@@ -277,7 +286,7 @@ enum gpio_result dal_gpio_service_unlock(
enum gpio_id id, enum gpio_id id,
uint32_t en) uint32_t en)
{ {
if (!service->busyness[id]) { if (id != GPIO_ID_UNKNOWN && !service->busyness[id]) {
ASSERT_CRITICAL(false); ASSERT_CRITICAL(false);
return GPIO_RESULT_OPEN_FAILED; return GPIO_RESULT_OPEN_FAILED;
} }
......
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