]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
pwm: stm32: Validate breakinput data from DT
authorThierry Reding <thierry.reding@gmail.com>
Wed, 16 Oct 2019 10:06:31 +0000 (12:06 +0200)
committerThierry Reding <thierry.reding@gmail.com>
Mon, 21 Oct 2019 14:50:04 +0000 (16:50 +0200)
Both index and level can only be either 0 or 1 and the filter value is
limited to values between (and including) 0 and 15. Validate that the
device tree node contains values that are within these ranges.

Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
drivers/pwm/pwm-stm32.c

index 9430b4cd383f83849ac3573ed030fc5fb8939a91..c5f51a33ee1b837bd028c243d14784c5235db389 100644 (file)
@@ -536,6 +536,7 @@ static int stm32_pwm_probe_breakinputs(struct stm32_pwm *priv,
                                       struct device_node *np)
 {
        int nb, ret, array_size;
+       unsigned int i;
 
        nb = of_property_count_elems_of_size(np, "st,breakinput",
                                             sizeof(struct stm32_breakinput));
@@ -557,6 +558,13 @@ static int stm32_pwm_probe_breakinputs(struct stm32_pwm *priv,
        if (ret)
                return ret;
 
+       for (i = 0; i < priv->num_breakinputs; i++) {
+               if (priv->breakinputs[i].index > 1 ||
+                   priv->breakinputs[i].level > 1 ||
+                   priv->breakinputs[i].filter > 15)
+                       return -EINVAL;
+       }
+
        return stm32_pwm_apply_breakinputs(priv);
 }