diff options
author | phk <phk@FreeBSD.org> | 2005-03-10 18:21:34 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2005-03-10 18:21:34 +0000 |
commit | 75bcf4d381dea96e2c41fb2edafacd6e06dd1f43 (patch) | |
tree | f972184c76526c477d18e70db28e2908e1edd6f5 /sys/fs/devfs/devfs_devs.c | |
parent | d0ffad32b585c4e46b0814f34d9469d7bbb374b3 (diff) | |
download | FreeBSD-src-75bcf4d381dea96e2c41fb2edafacd6e06dd1f43.zip FreeBSD-src-75bcf4d381dea96e2c41fb2edafacd6e06dd1f43.tar.gz |
Try to fix the mess I made of devname, with the minimal subset of the
larger minor/major patch which was posted for testing.
Diffstat (limited to 'sys/fs/devfs/devfs_devs.c')
-rw-r--r-- | sys/fs/devfs/devfs_devs.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/fs/devfs/devfs_devs.c b/sys/fs/devfs/devfs_devs.c index e9c2a55..761caa5 100644 --- a/sys/fs/devfs/devfs_devs.c +++ b/sys/fs/devfs/devfs_devs.c @@ -114,6 +114,8 @@ struct devfs_dirent ** devfs_itode (struct devfs_mount *dm, int inode) { + if (inode < 0) + return (NULL); if (inode < NDEVFSINO) return (&dm->dm_dirent[inode]); if (devfs_overflow == NULL) @@ -127,6 +129,8 @@ struct cdev ** devfs_itod (int inode) { + if (inode < 0) + return (NULL); if (inode < NDEVFSINO) return (&devfs_inot[inode]); if (devfs_overflow == NULL) @@ -270,10 +274,7 @@ devfs_populate(struct devfs_mount *dm) if (dev == NULL && de != NULL) { dd = de->de_dir; *dep = NULL; - TAILQ_REMOVE(&dd->de_dlist, de, de_list); - if (de->de_vnode) - de->de_vnode->v_data = NULL; - FREE(de, M_DEVFS); + devfs_delete(dd, de); devfs_dropref(i); continue; } |