[PATCH] serial: lpuart: guard against division-by-zero in setbrg functions
Naveen Kumar Chaudhary
naveen.osdev at gmail.com
Sun Jun 7 17:43:28 CEST 2026
_lpuart_serial_setbrg(), _lpuart32_serial_setbrg_7ulp(), and
_lpuart32_serial_setbrg() all divide by baudrate without validating
it first. If baudrate is zero due to misconfiguration or an
uninitialized value, this can cause a division-by-zero.
As a safety measure, add an early return when baudrate is zero in
all three functions.
Signed-off-by: Naveen Kumar Chaudhary <naveen.osdev at gmail.com>
---
drivers/serial/serial_lpuart.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/serial/serial_lpuart.c b/drivers/serial/serial_lpuart.c
index 9fdb6503085..76646e856fc 100644
--- a/drivers/serial/serial_lpuart.c
+++ b/drivers/serial/serial_lpuart.c
@@ -155,6 +155,9 @@ static void _lpuart_serial_setbrg(struct udevice *dev,
u16 sbr;
int ret;
+ if (!baudrate)
+ return;
+
if (CONFIG_IS_ENABLED(CLK)) {
ret = get_lpuart_clk_rate(dev, &clk);
if (ret)
@@ -245,6 +248,9 @@ static void _lpuart32_serial_setbrg_7ulp(struct udevice *dev,
u32 clk;
int ret;
+ if (!baudrate)
+ return;
+
if (CONFIG_IS_ENABLED(CLK)) {
ret = get_lpuart_clk_rate(dev, &clk);
if (ret)
@@ -314,6 +320,9 @@ static void _lpuart32_serial_setbrg(struct udevice *dev,
u32 sbr;
int ret;
+ if (!baudrate)
+ return;
+
if (CONFIG_IS_ENABLED(CLK)) {
ret = get_lpuart_clk_rate(dev, &clk);
if (ret)
--
2.43.0
More information about the U-Boot
mailing list