build/patch/kernel/odroidxu4-current/0002-next-soc-samsung-exynos-asv-fix-potential-overflow-in-multiply.patch
Igor Pečovnik 020ddfcfa1
Address Odroid XU4 current stability issues. (#1766)
* Address stability issues, update configuration. 
* Cleanup - remove not needed patches
* Add upstream patches

Board survived regular stress testing while previous config/version hanged instantly.
2020-02-01 17:55:22 +01:00

52 lines
1.9 KiB
Diff

From: Colin Ian King <colin.king@canonical.com>
The multiplication of opp_freq by MHZ is performed using unsigned int
multiplication however the result is being passed into a function where
the frequency is an unsigned long, so there is an expectation that the
result won't fit into an unsigned int. Fix any potential integer overflow
my making opp_freq an unsigned long. Also change from %u to %lu format
specifiers
Addresses-Coverity: ("Unintentional integer overflow")
Fixes: 5ea428595cc5 ("soc: samsung: Add Exynos Adaptive Supply Voltage driver")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
drivers/soc/samsung/exynos-asv.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/soc/samsung/exynos-asv.c b/drivers/soc/samsung/exynos-asv.c
index 8abf4dfaa5c5..d66fc74379a3 100644
--- a/drivers/soc/samsung/exynos-asv.c
+++ b/drivers/soc/samsung/exynos-asv.c
@@ -30,7 +30,7 @@ static int exynos_asv_update_cpu_opps(struct exynos_asv *asv,
{
struct exynos_asv_subsys *subsys = NULL;
struct dev_pm_opp *opp;
- unsigned int opp_freq;
+ unsigned long opp_freq;
int i;
for (i = 0; i < ARRAY_SIZE(asv->subsys); i++) {
@@ -51,7 +51,7 @@ static int exynos_asv_update_cpu_opps(struct exynos_asv *asv,
opp = dev_pm_opp_find_freq_exact(cpu, opp_freq * MHZ, true);
if (IS_ERR(opp)) {
- dev_info(asv->dev, "cpu%d opp%d, freq: %u missing\n",
+ dev_info(asv->dev, "cpu%d opp%d, freq: %lu missing\n",
cpu->id, i, opp_freq);
continue;
@@ -68,11 +68,11 @@ static int exynos_asv_update_cpu_opps(struct exynos_asv *asv,
new_volt, new_volt, new_volt);
if (ret < 0)
dev_err(asv->dev,
- "Failed to adjust OPP %u Hz/%u uV for cpu%d\n",
+ "Failed to adjust OPP %lu Hz/%u uV for cpu%d\n",
opp_freq, new_volt, cpu->id);
else
dev_dbg(asv->dev,
- "Adjusted OPP %u Hz/%u -> %u uV, cpu%d\n",
+ "Adjusted OPP %lu Hz/%u -> %u uV, cpu%d\n",
opp_freq, volt, new_volt, cpu->id);
}