diff options
-rw-r--r-- | sys/fs/devfs/devfs_vnops.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c index 49ea181..7f57e7c 100644 --- a/sys/fs/devfs/devfs_vnops.c +++ b/sys/fs/devfs/devfs_vnops.c @@ -297,8 +297,9 @@ devfs_lookupx(ap) struct vnode *dvp, **vpp; struct thread *td; struct devfs_dirent *de, *dd; + struct devfs_dirent **dde; struct devfs_mount *dmp; - dev_t cdev, *cpdev; + dev_t cdev; int error, flags, nameiop; char specname[SPECNAMELEN + 1], *pname; @@ -382,13 +383,11 @@ devfs_lookupx(ap) goto notfound; devfs_populate(dmp); - dd = dvp->v_data; - TAILQ_FOREACH(de, &dd->de_dlist, de_list) { - cpdev = devfs_itod(de->de_inode); - if (cpdev != NULL && cdev == *cpdev) - goto found; - continue; + dde = devfs_itode(dmp, cdev->si_inode); + if (dde != NULL && *dde != DE_DELETED && *dde != NULL) { + de = *dde; + goto found; } notfound: |