mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] one more memory leak in ext3+htree
@ 2003-02-24 19:43 Alex Tomas
  0 siblings, 0 replies; only message in thread
From: Alex Tomas @ 2003-02-24 19:43 UTC (permalink / raw)
  To: linux-kernel; +Cc: Andrew Morton


Hello!

I've just found one more memory leak in ext2+htree code.
this time it's free_rb_tree_fname(). here is aggregated
from previous messages patch against 2.5.62. it fixes
two memory leaks.



diff -uNr linux/fs/ext3/dir.c edited/fs/ext3/dir.c
--- linux/fs/ext3/dir.c	Mon Nov 11 06:28:16 2002
+++ edited/fs/ext3/dir.c	Mon Feb 24 22:19:55 2003
@@ -33,12 +33,17 @@
 static int ext3_readdir(struct file *, void *, filldir_t);
 static int ext3_dx_readdir(struct file * filp,
 			   void * dirent, filldir_t filldir);
+static int ext3_release_dir (struct inode * inode,
+				struct file * filp);
 
 struct file_operations ext3_dir_operations = {
 	.read		= generic_read_dir,
 	.readdir	= ext3_readdir,		/* we take BKL. needed?*/
 	.ioctl		= ext3_ioctl,		/* BKL held */
 	.fsync		= ext3_sync_file,		/* BKL held */
+#ifdef CONFIG_EXT3_INDEX
+	.release	= ext3_release_dir,
+#endif
 };
 
 
@@ -275,7 +281,11 @@
 		 */
 		parent = n->rb_parent;
 		fname = rb_entry(n, struct fname, rb_hash);
-		kfree(fname);
+		while (fname) {
+			struct fname * old = fname;
+			fname = fname->next;
+			kfree (old);
+		}
 		if (!parent)
 			root->rb_node = 0;
 		else if (parent->rb_left == n)
@@ -481,4 +491,13 @@
 	UPDATE_ATIME(inode);
 	return 0;
 }
+
+static int ext3_release_dir (struct inode * inode, struct file * filp)
+{
+       if (is_dx(inode) && filp->private_data)
+		ext3_htree_free_dir_info(filp->private_data);
+
+	return 0;
+}
+
 #endif



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-02-24 19:38 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-02-24 19:43 [PATCH] one more memory leak in ext3+htree Alex Tomas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®