From 224dc48a95f64fe386bc1ec65cd4f3280fc8390b Mon Sep 17 00:00:00 2001 From: dongjiuzhu1 Date: Tue, 24 Jun 2025 21:40:02 +0800 Subject: [PATCH] drivers/serial: fix the issue of the refs count for filep being zeroed out by utilizing dup2 file_open will clear filep, include f_refs Signed-off-by: dongjiuzhu1 --- drivers/serial/ptmx.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/serial/ptmx.c b/drivers/serial/ptmx.c index f38da9c93fd..ed699dc85df 100644 --- a/drivers/serial/ptmx.c +++ b/drivers/serial/ptmx.c @@ -206,12 +206,10 @@ static int ptmx_open(FAR struct file *filep) /* Open the master device: /dev/ptyN, where N=minor */ snprintf(devname, sizeof(devname), "/dev/pty%d", minor); - memcpy(&temp, filep, sizeof(temp)); - ret = file_open(filep, devname, O_RDWR | O_CLOEXEC); + ret = file_open(&temp, devname, O_RDWR | O_CLOEXEC); DEBUGASSERT(ret >= 0); /* file_open() should never fail */ - - /* Close the multiplexor device: /dev/ptmx */ - + ret = file_dup2(&temp, filep); + DEBUGASSERT(ret >= 0); /* file_dup2() should never fail) */ ret = file_close(&temp); DEBUGASSERT(ret >= 0); /* file_close() should never fail */