mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 23:51:39 +00:00
pwm: atmel-hlcdc: Prevent division by zero
The slow and system clock should never return a rate of zero, but this might happen if the clocks property defined in the DT is referencing the wrong clocks. Prevent any division by zero from happening by testing the clk_freq value before calling do_div(). Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
This commit is contained in:
parent
d2048c4915
commit
df6922adec
@ -64,6 +64,9 @@ static int atmel_hlcdc_pwm_config(struct pwm_chip *c,
|
||||
|
||||
if (!chip->errata || !chip->errata->slow_clk_erratum) {
|
||||
clk_freq = clk_get_rate(new_clk);
|
||||
if (!clk_freq)
|
||||
return -EINVAL;
|
||||
|
||||
clk_period_ns = (u64)NSEC_PER_SEC * 256;
|
||||
do_div(clk_period_ns, clk_freq);
|
||||
}
|
||||
@ -73,6 +76,9 @@ static int atmel_hlcdc_pwm_config(struct pwm_chip *c,
|
||||
clk_period_ns > period_ns) {
|
||||
new_clk = hlcdc->sys_clk;
|
||||
clk_freq = clk_get_rate(new_clk);
|
||||
if (!clk_freq)
|
||||
return -EINVAL;
|
||||
|
||||
clk_period_ns = (u64)NSEC_PER_SEC * 256;
|
||||
do_div(clk_period_ns, clk_freq);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user