[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
This commit is contained in:
kaidegit
2026-05-19 13:12:21 +08:00
committed by Rbb666
parent 4ec8373caa
commit b57c80f06f
@@ -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;