diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-02-06 20:50:49 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-02-12 20:53:35 +0100 |
commit | 11026956c6ae3039c8a358a02fcd4ca6fac65e8f (patch) | |
tree | 76e9f44c8bb6b7ecc9cc9e7aeef68ce24038979f /cpukit/libfs/src/imfs | |
parent | IMFS: Add root directory to FS info (diff) | |
download | rtems-11026956c6ae3039c8a358a02fcd4ca6fac65e8f.tar.bz2 |
IMFS: Fix resource leak
Diffstat (limited to '')
-rw-r--r-- | cpukit/libfs/src/imfs/imfs_link.c | 10 |
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; } |