[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