]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
fs: ubifs: fix ubifs_finddir() result check
authorPatrick Delaunay <patrick.delaunay@foss.st.com>
Tue, 9 Jun 2026 09:00:41 +0000 (11:00 +0200)
committerHeiko Schocher <hs@nabladev.com>
Wed, 8 Jul 2026 09:28:23 +0000 (11:28 +0200)
ubifs_finddir() can return a negative error code (-ENOMEM or
PTR_ERR(dent)) and returns 1 when the name is found in the directory.
Fix the result check accordingly.

This fixes file existence detection (for "test -e") when U-Boot uses
UBIFS through ops ubifs_exists(). Since this function is also called
before other file operations, commands such as "load" could be executed
on a non-existing file without reporting an error.

Fixes: 0cab29ff467e ("fs: ubifs: Fix and rework error handling in ubifs_finddir")
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
fs/ubifs/ubifs.c

index 3f2e20377458c966a399fcc1384f1eab5c1381bd..59bc754730417bccf40e598bb753dbd9bcde64fe 100644 (file)
@@ -544,7 +544,7 @@ static unsigned long ubifs_findfile(struct super_block *sb, char *filename)
                                *(next++) = '\0';
                }
                ret = ubifs_finddir(sb, name, root_inum, &inum);
-               if (!ret) {
+               if (ret <= 0) {
                        kfree(buf);
                        return 0;
                }