Module Name:    src
Committed By:   he
Date:           Mon Sep  1 16:48:42 UTC 2014

Modified Files:
        src/sys/ufs/chfs: ebh.c

Log Message:
Plug memory leak in add_peb_to_free() and add_peb_to_in_use()
in case there's a duplicate in the tree.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/ufs/chfs/ebh.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/ufs/chfs/ebh.c
diff -u src/sys/ufs/chfs/ebh.c:1.3 src/sys/ufs/chfs/ebh.c:1.4
--- src/sys/ufs/chfs/ebh.c:1.3	Fri Aug 10 09:26:58 2012
+++ src/sys/ufs/chfs/ebh.c	Mon Sep  1 16:48:42 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: ebh.c,v 1.3 2012/08/10 09:26:58 ttoth Exp $	*/
+/*	$NetBSD: ebh.c,v 1.4 2014/09/01 16:48:42 he Exp $	*/
 
 /*-
  * Copyright (c) 2010 Department of Software Engineering,
@@ -828,8 +828,10 @@ add_peb_to_free(struct chfs_ebh *ebh, in
 	peb->erase_cnt = ec;
 	peb->pebnr = pebnr;
 	result = RB_INSERT(peb_free_rbtree, &ebh->free, peb);
-	if (result)
+	if (result) {
+		kmem_free(peb, sizeof(struct chfs_peb));
 		return 1;
+	}
 
 	return 0;
 }
@@ -856,8 +858,10 @@ add_peb_to_in_use(struct chfs_ebh *ebh, 
 	peb->erase_cnt = ec;
 	peb->pebnr = pebnr;
 	result = RB_INSERT(peb_in_use_rbtree, &ebh->in_use, peb);
-	if (result)
+	if (result) {
+		kmem_free(peb, sizeof(struct chfs_peb));
 		return 1;
+	}
 
 	return 0;
 }

Reply via email to