summaryrefslogtreecommitdiff
path: root/drivers/serial
diff options
context:
space:
mode:
authorAhmad Fatoum <a.fatoum@pengutronix.de>2022-02-20 13:47:29 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2022-02-23 11:15:44 +0100
commitdd069035be60469d49b76ae48856db2dc357bc4f (patch)
treeaa467dc798128836aea2143b5f740b891003bbb4 /drivers/serial
parent203d97c81e9c9a2f5bcc268d9399899a306cb722 (diff)
downloadbarebox-dd069035be60469d49b76ae48856db2dc357bc4f.tar.gz
serial: stm32: bail if clock_get_rate returns zero
While this shouldn't happen in a well-behaving system, with SCMI barebox may become dependent on the firmware to provide a non-zero rate here. Sanitize the value to avoid a division -by-zero. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20220220124736.3052502-18-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/serial_stm32.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/serial/serial_stm32.c b/drivers/serial/serial_stm32.c
index 271897f174..f1d4c6de90 100644
--- a/drivers/serial/serial_stm32.c
+++ b/drivers/serial/serial_stm32.c
@@ -41,6 +41,8 @@ static int stm32_serial_setbaudrate(struct console_device *cdev, int baudrate)
unsigned long clock_rate;
clock_rate = clk_get_rate(stm32->clk);
+ if (!clock_rate)
+ return -EINVAL;
int_div = DIV_ROUND_CLOSEST(clock_rate, baudrate);