From da47f41e4265390003b0b2cfc812e1064a355477 Mon Sep 17 00:00:00 2001 From: Johann Fischer Date: Tue, 8 Feb 2022 13:49:37 +0100 Subject: [PATCH] modbus: do not loop in UART IRQ handler On some platforms, if there are multiple MODBUS interfaces, receiving of RTU frames may fail. Replacing while loop with just "if" fixes this problem. Signed-off-by: Johann Fischer --- subsys/modbus/modbus_serial.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subsys/modbus/modbus_serial.c b/subsys/modbus/modbus_serial.c index 0289c001bc6..97f44adcd73 100644 --- a/subsys/modbus/modbus_serial.c +++ b/subsys/modbus/modbus_serial.c @@ -389,7 +389,7 @@ static void uart_cb_handler(const struct device *dev, void *app_data) cfg = ctx->cfg; - while (uart_irq_update(cfg->dev) && uart_irq_is_pending(cfg->dev)) { + if (uart_irq_update(cfg->dev) && uart_irq_is_pending(cfg->dev)) { if (uart_irq_rx_ready(cfg->dev)) { cb_handler_rx(ctx);