summaryrefslogtreecommitdiff
path: root/components/drivers
diff options
context:
space:
mode:
authorkaidegit <[email protected]>2026-05-17 10:52:51 +0800
committerRbb666 <[email protected]>2026-05-19 13:12:21 +0800
commitb57c80f06f640f951682cd29ed79910fe7f5f789 (patch)
treecffef2710343649ecd961f9d63123070f802d225 /components/drivers
parent4ec8373caaf2be9bf1dd67f7057bd7c0d58484de (diff)
[drivers][serial/v2] fix missing break after -RT_EPERM when buf size is 0
When rx_bufsz or tx_bufsz is 0, the driver returns -RT_EPERM but falls through to RT_ASSERT(rx_fifo/tx_fifo != RT_NULL). Since serial_rx/serial_tx is NULL in non-buffered mode, this triggers an assertion failure. Add break after setting ret = -RT_EPERM in the four affected cases: - RT_SERIAL_CTRL_SET_RX_TIMEOUT - RT_SERIAL_CTRL_SET_TX_TIMEOUT - RT_SERIAL_CTRL_GET_RX_TIMEOUT - RT_SERIAL_CTRL_GET_TX_TIMEOUT
Diffstat (limited to 'components/drivers')
-rw-r--r--components/drivers/serial/dev_serial_v2.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/components/drivers/serial/dev_serial_v2.c b/components/drivers/serial/dev_serial_v2.c
index 4f21494634..f3bb65da2c 100644
--- a/components/drivers/serial/dev_serial_v2.c
+++ b/components/drivers/serial/dev_serial_v2.c
@@ -1466,6 +1466,7 @@ static rt_err_t rt_serial_control(struct rt_device *dev,
if (serial->config.rx_bufsz == 0)
{
ret = -RT_EPERM;
+ break;
}
struct rt_serial_rx_fifo *rx_fifo = RT_NULL;
@@ -1487,6 +1488,7 @@ static rt_err_t rt_serial_control(struct rt_device *dev,
if (serial->config.tx_bufsz == 0)
{
ret = -RT_EPERM;
+ break;
}
struct rt_serial_tx_fifo *tx_fifo = RT_NULL;
@@ -1507,6 +1509,7 @@ static rt_err_t rt_serial_control(struct rt_device *dev,
if (serial->config.rx_bufsz == 0)
{
ret = -RT_EPERM;
+ break;
}
struct rt_serial_rx_fifo *rx_fifo = RT_NULL;
@@ -1527,6 +1530,7 @@ static rt_err_t rt_serial_control(struct rt_device *dev,
if (serial->config.tx_bufsz == 0)
{
ret = -RT_EPERM;
+ break;
}
struct rt_serial_tx_fifo *tx_fifo = RT_NULL;