[syslinux:master] core, fs: eliminate recursion in put_inode()

syslinux-bot for H. Peter Anvin hpa at zytor.com
Sat Jun 26 18:48:15 PDT 2010


Commit-ID:  17a32fe2e902d7d65b2f6aa3f501456662d53fc4
Gitweb:     http://syslinux.zytor.com/commit/17a32fe2e902d7d65b2f6aa3f501456662d53fc4
Author:     H. Peter Anvin <hpa at zytor.com>
AuthorDate: Sat, 26 Jun 2010 18:46:33 -0700
Committer:  H. Peter Anvin <hpa at zytor.com>
CommitDate: Sat, 26 Jun 2010 18:46:33 -0700

core, fs: eliminate recursion in put_inode()

We don't actually need recursion in put_inode(), so replace recursion
with a loop.

Signed-off-by: H. Peter Anvin <hpa at zytor.com>


---
 core/fs/fs.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/core/fs/fs.c b/core/fs/fs.c
index a101dfd..48856c9 100644
--- a/core/fs/fs.c
+++ b/core/fs/fs.c
@@ -34,11 +34,10 @@ struct inode *alloc_inode(struct fs_info *fs, uint32_t ino, size_t data)
  */
 void put_inode(struct inode *inode)
 {
-    if (inode) {
-	if (! --inode->refcnt) {
-	    put_inode(inode->parent);
-	    free(inode);
-	}
+    while (inode && --inode->refcnt == 0) {
+	struct inode *dead = inode;
+	inode = inode->parent;
+	free(dead);
     }
 }
 



More information about the Syslinux-commits mailing list