[PATCH] Prevent memory leak in devpts
From: Olaf Kirch
Date: Wed Aug 25 2004 - 05:54:23 EST
Hi,
There is a dentry refcount leak in devpts_get_tty.
struct tty_struct *devpts_get_tty(int number)
{
struct dentry *dentry = get_node(number);
struct tty_struct *tty;
tty = (IS_ERR(dentry) || !dentry->d_inode) ? NULL :
dentry->d_inode->u.generic_ip;
up(&devpts_root->d_inode->i_sem);
return tty;
}
The get_node function does a lookup on /dev/pts/<number> and returns the
dentry, taking a reference. We should dput the dentry after extracting
the tty pointer.
The attached patch does this.
Olaf
--
Olaf Kirch | The Hardware Gods hate me.
okir@xxxxxxx |
---------------+
Index: v268/fs/devpts/inode.c
===================================================================
--- v268.orig/fs/devpts/inode.c
+++ v268/fs/devpts/inode.c
@@ -183,6 +183,7 @@ struct tty_struct *devpts_get_tty(int nu
dentry->d_inode->u.generic_ip;
up(&devpts_root->d_inode->i_sem);
+ dput(dentry);
return tty;
}