Skip to content

Commit cf4a9d7

Browse files
GUIDINGLIacassis
authored andcommitted
drivers/serial/pty: fix memory leak when pty_destroy
1. ptmx_open -> pty_register2 -> master register i_crefs 1 -> salve register i_crefs 1 2. ptmx_open -> master unregister i_crefs 0 3. master open i_crefs 1 salve open i_crefs 2 4. in pty_close() master close with i_crefs 1 salve close with i_crefs 2 So, if correct the i_crefs judgement in pty_close() Signed-off-by: ligd <liguiding1@xiaomi.com> Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
1 parent eee0d81 commit cf4a9d7

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/serial/pty.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,8 @@ static int pty_close(FAR struct file *filep)
340340

341341
/* Check if the decremented inode reference count would go to zero */
342342

343-
if (atomic_read(&inode->i_crefs) == 1)
343+
if ((!dev->pd_master && atomic_load(&inode->i_crefs) == 2) ||
344+
(dev->pd_master && atomic_load(&inode->i_crefs) == 1))
344345
{
345346
/* Did the (single) master just close its reference? */
346347

0 commit comments

Comments
 (0)