Skip to content
Snippets Groups Projects
Commit e70f04fb authored by Heinrich Schuchardt's avatar Heinrich Schuchardt :speech_balloon: Committed by Tom Rini
Browse files

ext4: detect directories in ext4fs_exists()


While fat_exists() reports directories and files as existing
ext4fs_exists() only recognizes files. This lead to errors
when using systemd-boot with an ext4 file-system.

Change ext4fs_exists() to find any type of inode:
files, directories, symbolic links.

Fixes: a1596438 ("ext4fs ls load support")
Signed-off-by: default avatarHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
parent 3766a249
No related branches found
No related tags found
No related merge requests found
......@@ -2214,9 +2214,8 @@ static char *ext4fs_read_symlink(struct ext2fs_node *node)
return symlink;
}
static int ext4fs_find_file1(const char *currpath,
struct ext2fs_node *currroot,
struct ext2fs_node **currfound, int *foundtype)
int ext4fs_find_file1(const char *currpath, struct ext2fs_node *currroot,
struct ext2fs_node **currfound, int *foundtype)
{
char fpath[strlen(currpath) + 1];
char *name = fpath;
......
......@@ -54,6 +54,8 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos, loff_t len,
char *buf, loff_t *actread);
int ext4fs_find_file(const char *path, struct ext2fs_node *rootnode,
struct ext2fs_node **foundnode, int expecttype);
int ext4fs_find_file1(const char *currpath, struct ext2fs_node *currroot,
struct ext2fs_node **currfound, int *foundtype);
int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name,
struct ext2fs_node **fnode, int *ftype);
......
......@@ -208,11 +208,14 @@ int ext4fs_ls(const char *dirname)
int ext4fs_exists(const char *filename)
{
loff_t file_len;
int ret;
struct ext2fs_node *dirnode = NULL;
int filetype;
ret = ext4fs_open(filename, &file_len);
return ret == 0;
if (!filename)
return 0;
return ext4fs_find_file1(filename, &ext4fs_root->diropen, &dirnode,
&filetype);
}
int ext4fs_size(const char *filename, loff_t *size)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment