mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-22 19:44:24 +08:00
[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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user