diff --git a/fs/devfs.c b/fs/devfs.c index 6cf8920cb..3a90603e5 100644 --- a/fs/devfs.c +++ b/fs/devfs.c @@ -54,7 +54,7 @@ struct dirent* devfs_readdir(struct device_d *_dev, struct dir *dir) { struct device_d *dev = dir->priv; - while (dev && !strlen(dev->id)) + while (dev && (!strlen(dev->id) || !dev->driver)) dev = dev->next; if (dev) { @@ -79,6 +79,9 @@ int devfs_stat(struct device_d *_dev, const char *filename, struct stat *s) if (!dev) return -ENOENT; + if (!dev->driver) + return -ENXIO; + s->st_mode = S_IFCHR; s->st_size = dev->size; if (dev->driver->write)