From 8635385c0b9d0b016e0bd6cc61523f60abc9a1e5 Mon Sep 17 00:00:00 2001 From: Arthur Heymans Date: Wed, 12 Oct 2016 01:04:28 +0200 Subject: [PATCH] UPSTREAM: nb/i945,gm45,x4x/gma.c: fix unsigned arithmetics This issue was found by Coverity Scan, CID 1364118. BUG=None BRANCH=None TEST=None Signed-off-by: Arthur Heymans Reviewed-on: https://review.coreboot.org/16992 Reviewed-by: Martin Roth Tested-by: build bot (Jenkins) Change-Id: Iba3c0f4f952729d9e0987d928b63ef8b8fe8841e Reviewed-on: https://chromium-review.googlesource.com/400475 Commit-Ready: Furquan Shaikh Tested-by: Furquan Shaikh Reviewed-by: Aaron Durbin --- src/northbridge/intel/gm45/gma.c | 6 ++++-- src/northbridge/intel/i945/gma.c | 3 ++- src/northbridge/intel/x4x/gma.c | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/northbridge/intel/gm45/gma.c b/src/northbridge/intel/gm45/gma.c index 026a165def..30c8d9a6e1 100644 --- a/src/northbridge/intel/gm45/gma.c +++ b/src/northbridge/intel/gm45/gma.c @@ -171,7 +171,8 @@ static void gma_init_lvds(const struct northbridge_intel_gm45_config *info, u32 p = candp1 * pixel_p2; u32 vco = DIV_ROUND_CLOSEST(BASE_FREQUENCY * m, candn + 2); u32 dot = DIV_ROUND_CLOSEST(vco, p); - u32 this_err = ABS(dot - target_frequency); + u32 this_err = MAX(dot, target_frequency) - + MIN(dot, target_frequency); if (this_err < smallest_err) { smallest_err = this_err; pixel_n = candn; @@ -477,7 +478,8 @@ static void gma_init_vga(const struct northbridge_intel_gm45_config *info, u32 p = candp1 * pixel_p2; u32 vco = DIV_ROUND_CLOSEST(BASE_FREQUENCY * m, candn + 2); u32 dot = DIV_ROUND_CLOSEST(vco, p); - u32 this_err = ABS(dot - target_frequency); + u32 this_err = MAX(dot, target_frequency) - + MIN(dot, target_frequency); if (this_err < smallest_err) { smallest_err= this_err; pixel_n = candn; diff --git a/src/northbridge/intel/i945/gma.c b/src/northbridge/intel/i945/gma.c index e40b9f00a8..d8950e61b7 100644 --- a/src/northbridge/intel/i945/gma.c +++ b/src/northbridge/intel/i945/gma.c @@ -177,7 +177,8 @@ static int intel_gma_init_lvds(struct northbridge_intel_i945_config *conf, u32 p = candp1 * pixel_p2; u32 vco = DIV_ROUND_CLOSEST(BASE_FREQUENCY * m, candn + 2); u32 dot = DIV_ROUND_CLOSEST(vco, p); - u32 this_err = ABS(dot - target_frequency); + u32 this_err = MAX(dot, target_frequency) - + MIN(dot, target_frequency); if ((m < 70) || (m > 120)) continue; if (this_err < smallest_err) { diff --git a/src/northbridge/intel/x4x/gma.c b/src/northbridge/intel/x4x/gma.c index eb419c9f7d..3f3ba2bf26 100644 --- a/src/northbridge/intel/x4x/gma.c +++ b/src/northbridge/intel/x4x/gma.c @@ -191,7 +191,8 @@ static void intel_gma_init(const struct northbridge_intel_x4x_config *info, u32 vco = DIV_ROUND_CLOSEST( BASE_FREQUENCY * m, candn + 2); u32 dot = DIV_ROUND_CLOSEST(vco, p); - u32 this_err = ABS(dot - target_frequency); + u32 this_err = MAX(dot, target_frequency) - + MIN(dot, target_frequency); if (this_err < err_most) { err_most = this_err; pixel_n = candn;