uml/hostfs: Propagate dirent.d_type to filldir()
Currently the (optional) d_type member in struct dirent is always DT_UNKNOWN on hostfs, which may confuse buggy software using readdir(). Make sure to propagate its value from the underlying filesystem if it's available there. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:

committed by
Richard Weinberger

parent
c0b79a90b1
commit
3ee6bd8e8d
@@ -283,6 +283,7 @@ int hostfs_readdir(struct file *file, void *ent, filldir_t filldir)
|
||||
char *name;
|
||||
unsigned long long next, ino;
|
||||
int error, len;
|
||||
unsigned int type;
|
||||
|
||||
name = dentry_name(file->f_path.dentry);
|
||||
if (name == NULL)
|
||||
@@ -292,9 +293,9 @@ int hostfs_readdir(struct file *file, void *ent, filldir_t filldir)
|
||||
if (dir == NULL)
|
||||
return -error;
|
||||
next = file->f_pos;
|
||||
while ((name = read_dir(dir, &next, &ino, &len)) != NULL) {
|
||||
while ((name = read_dir(dir, &next, &ino, &len, &type)) != NULL) {
|
||||
error = (*filldir)(ent, name, len, file->f_pos,
|
||||
ino, DT_UNKNOWN);
|
||||
ino, type);
|
||||
if (error) break;
|
||||
file->f_pos = next;
|
||||
}
|
||||
|
Reference in New Issue
Block a user