Skip to content

Commit 78aaa47

Browse files
committed
[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
1 parent 630f4fa commit 78aaa47

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

components/drivers/serial/dev_serial_v2.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1466,6 +1466,7 @@ static rt_err_t rt_serial_control(struct rt_device *dev,
14661466
if (serial->config.rx_bufsz == 0)
14671467
{
14681468
ret = -RT_EPERM;
1469+
break;
14691470
}
14701471

14711472
struct rt_serial_rx_fifo *rx_fifo = RT_NULL;
@@ -1487,6 +1488,7 @@ static rt_err_t rt_serial_control(struct rt_device *dev,
14871488
if (serial->config.tx_bufsz == 0)
14881489
{
14891490
ret = -RT_EPERM;
1491+
break;
14901492
}
14911493

14921494
struct rt_serial_tx_fifo *tx_fifo = RT_NULL;
@@ -1507,6 +1509,7 @@ static rt_err_t rt_serial_control(struct rt_device *dev,
15071509
if (serial->config.rx_bufsz == 0)
15081510
{
15091511
ret = -RT_EPERM;
1512+
break;
15101513
}
15111514

15121515
struct rt_serial_rx_fifo *rx_fifo = RT_NULL;
@@ -1527,6 +1530,7 @@ static rt_err_t rt_serial_control(struct rt_device *dev,
15271530
if (serial->config.tx_bufsz == 0)
15281531
{
15291532
ret = -RT_EPERM;
1533+
break;
15301534
}
15311535

15321536
struct rt_serial_tx_fifo *tx_fifo = RT_NULL;

0 commit comments

Comments
 (0)