summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-02-06 20:50:49 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-02-12 20:53:35 +0100
commit11026956c6ae3039c8a358a02fcd4ca6fac65e8f (patch)
tree76e9f44c8bb6b7ecc9cc9e7aeef68ce24038979f
parent60cf8a5c1680effdeb6f8df9bd47e0eedcc57709 (diff)
IMFS: Fix resource leak
-rw-r--r--cpukit/libfs/src/imfs/imfs_link.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/cpukit/libfs/src/imfs/imfs_link.c b/cpukit/libfs/src/imfs/imfs_link.c
index 27e04ffae2..06794af682 100644
--- a/cpukit/libfs/src/imfs/imfs_link.c
+++ b/cpukit/libfs/src/imfs/imfs_link.c
@@ -119,7 +119,7 @@ static IMFS_jnode_t *IMFS_node_remove_hard_link(
_Assert( target != NULL );
- if ( target->st_nlink == 1) {
+ if ( target->st_nlink == 1 ) {
target = (*target->control->node_remove)( target );
if ( target == NULL ) {
node = NULL;
@@ -129,6 +129,14 @@ static IMFS_jnode_t *IMFS_node_remove_hard_link(
IMFS_update_ctime( target );
}
+ if ( target != NULL ) {
+ --target->reference_count;
+
+ if ( target->reference_count == 0 ) {
+ IMFS_node_destroy( target );
+ }
+ }
+
return node;
}