From 728d9e491967d3691fda0d0a20dec3ac418bdc68 Mon Sep 17 00:00:00 2001 From: Tang Haojin Date: Mon, 1 Sep 2025 12:46:43 +0800 Subject: [PATCH] fix(ioctl): _IOR() overflows in switch (int) #10650 --- components/drivers/ipc/pipe.c | 2 +- components/drivers/serial/dev_serial.c | 4 ++-- components/drivers/serial/dev_serial_v2.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/components/drivers/ipc/pipe.c b/components/drivers/ipc/pipe.c index e86ac3576f..64540eade1 100644 --- a/components/drivers/ipc/pipe.c +++ b/components/drivers/ipc/pipe.c @@ -190,7 +190,7 @@ static int pipe_fops_ioctl(struct dfs_file *fd, int cmd, void *args) pipe = (rt_pipe_t *)fd->vnode->data; - switch (cmd) + switch ((rt_ubase_t)cmd) { case FIONREAD: *((int*)args) = rt_ringbuffer_data_len(pipe->fifo); diff --git a/components/drivers/serial/dev_serial.c b/components/drivers/serial/dev_serial.c index eb7c5275ec..3ebe3063ac 100644 --- a/components/drivers/serial/dev_serial.c +++ b/components/drivers/serial/dev_serial.c @@ -125,7 +125,7 @@ static int serial_fops_ioctl(struct dfs_file *fd, int cmd, void *args) int mask = O_NONBLOCK | O_APPEND; device = (rt_device_t)fd->vnode->data; - switch (cmd) + switch ((rt_ubase_t)cmd) { case FIONREAD: break; @@ -1074,7 +1074,7 @@ static rt_err_t rt_serial_control(struct rt_device *dev, RT_ASSERT(dev != RT_NULL); serial = (struct rt_serial_device *)dev; - switch (cmd) + switch ((rt_ubase_t)cmd) { case RT_DEVICE_CTRL_SUSPEND: /* suspend device */ diff --git a/components/drivers/serial/dev_serial_v2.c b/components/drivers/serial/dev_serial_v2.c index 2a526c809a..d2b9fde828 100644 --- a/components/drivers/serial/dev_serial_v2.c +++ b/components/drivers/serial/dev_serial_v2.c @@ -121,7 +121,7 @@ static int serial_fops_ioctl(struct dfs_file *fd, int cmd, void *args) int mask = O_NONBLOCK | O_APPEND; device = (rt_device_t)fd->vnode->data; - switch (cmd) + switch ((rt_ubase_t)cmd) { case FIONREAD: break; @@ -1385,7 +1385,7 @@ static rt_err_t rt_serial_control(struct rt_device *dev, RT_ASSERT(dev != RT_NULL); serial = (struct rt_serial_device *)dev; - switch (cmd) + switch ((rt_ubase_t)cmd) { case RT_DEVICE_CTRL_SUSPEND: /* suspend device */