fixup: pty: possible memory leaking on close()

The ref_count of the vnode is NOT bound to the resource reference counts
of the ptm device created by opening `dev/ptmx`, so the conditional
release of resource may end up by memory leaking if the multiple user
have open the `dev/ptmx`.

Changes:

- Removed conditional branch on recycling resource

Signed-off-by: Shell <smokewood@qq.com>
This commit is contained in:
Shell 2024-09-19 15:06:03 +08:00 committed by Meco Man
parent 87906499a3
commit 210cd71128
1 changed files with 3 additions and 11 deletions

View File

@ -27,7 +27,6 @@ static int ptm_fops_open(struct dfs_file *file)
rt_uint32_t oflags = file->flags; rt_uint32_t oflags = file->flags;
rt_thread_t cur_thr = rt_thread_self(); rt_thread_t cur_thr = rt_thread_self();
/* we don't check refcnt because each open will create a new device */
if (file->vnode && file->vnode->data) if (file->vnode && file->vnode->data)
{ {
/** /**
@ -62,16 +61,9 @@ static int ptm_fops_close(struct dfs_file *file)
if (file->data) if (file->data)
{ {
if (file->vnode->ref_count != 1) device = (rt_device_t)file->data;
{ tp = rt_container_of(device, struct lwp_tty, parent);
rc = 0; rc = bsd_ptsdev_methods.fo_close(tp, rt_thread_self());
}
else
{
device = (rt_device_t)file->data;
tp = rt_container_of(device, struct lwp_tty, parent);
rc = bsd_ptsdev_methods.fo_close(tp, rt_thread_self());
}
} }
else else
{ {