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:
parent
87906499a3
commit
210cd71128
|
@ -27,7 +27,6 @@ static int ptm_fops_open(struct dfs_file *file)
|
|||
rt_uint32_t oflags = file->flags;
|
||||
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)
|
||||
{
|
||||
/**
|
||||
|
@ -62,16 +61,9 @@ static int ptm_fops_close(struct dfs_file *file)
|
|||
|
||||
if (file->data)
|
||||
{
|
||||
if (file->vnode->ref_count != 1)
|
||||
{
|
||||
rc = 0;
|
||||
}
|
||||
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());
|
||||
}
|
||||
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
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue