
Hello Michael,
Am Mon, Aug 05, 2024 at 07:31:40PM +0200 schrieb Michael Trimarchi:
The inode should be freed after a reference is get to avoid memory leak
Signed-off-by: Michael Trimarchi michael@amarulasolutions.com
Tested this on top of my recent ubifs series. No obvious problems found on U-Boot command line with various combinations of commands, no crashes, so …
Tested-by: Alexander Dahl ada@thorsis.com
Greets Alex
fs/ubifs/ubifs.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/fs/ubifs/ubifs.c b/fs/ubifs/ubifs.c index 048730db7f..6acd6c3776 100644 --- a/fs/ubifs/ubifs.c +++ b/fs/ubifs/ubifs.c @@ -319,9 +319,7 @@ static int filldir(struct ubifs_info *c, const char *name, int namlen, } ctime_r((time_t *)&inode->i_mtime, filetime); printf("%9lld %24.24s ", inode->i_size, filetime); -#ifndef __UBOOT__ ubifs_iput(inode); -#endif
printf("%s\n", name);
@@ -557,6 +555,7 @@ static unsigned long ubifs_findfile(struct super_block *sb, char *filename)
/* We have some sort of symlink recursion, bail out */ if (symlink_count++ > 8) {
ubifs_iput(inode); printf("Symlink recursion, aborting\n"); return 0; }
@@ -568,6 +567,7 @@ static unsigned long ubifs_findfile(struct super_block *sb, char *filename) * the leading slash */ next = name = link_name + 1; root_inum = 1;
ubifs_iput(inode); continue; } /* Relative to cur dir */
@@ -575,6 +575,7 @@ static unsigned long ubifs_findfile(struct super_block *sb, char *filename) link_name, next == NULL ? "" : next); memcpy(symlinkpath, buf, sizeof(buf)); next = name = symlinkpath;
}ubifs_iput(inode); continue;
@@ -583,8 +584,10 @@ static unsigned long ubifs_findfile(struct super_block *sb, char *filename) */
/* Found the node! */
if (!next || *next == '\0')
if (!next || *next == '\0') {
ubifs_iput(inode); return inum;
}
root_inum = inum; name = next;
-- 2.43.0