|
|
| version 1.11, 2003/11/13 04:04:42 | version 1.12, 2004/05/19 22:52:55 |
|---|---|
| Line 76 newstat_copyout(struct stat *buf, void * | Line 76 newstat_copyout(struct stat *buf, void * |
| */ | */ |
| if (S_ISCHR(tbuf.st_mode) && | if (S_ISCHR(tbuf.st_mode) && |
| (dev = udev2dev(buf->st_rdev, 0)) != NODEV) { | (dev = udev2dev(buf->st_rdev, 0)) != NODEV) { |
| if (dev_dport(dev) != NULL && (dev_dflags(dev) & D_DISK)) { | if (dev_is_good(dev) && (dev_dflags(dev) & D_DISK)) { |
| tbuf.st_mode &= ~S_IFMT; | tbuf.st_mode &= ~S_IFMT; |
| tbuf.st_mode |= S_IFBLK; | tbuf.st_mode |= S_IFBLK; |
| Line 311 linux_ustat(struct linux_ustat_args *arg | Line 311 linux_ustat(struct linux_ustat_args *arg |
| * dev_t returned from previous syscalls. Just return a bzeroed | * dev_t returned from previous syscalls. Just return a bzeroed |
| * ustat in that case. | * ustat in that case. |
| */ | */ |
| dev = makedev(args->dev >> 8, args->dev & 0xFF); | dev = udev2dev(makeudev(args->dev >> 8, args->dev & 0xFF), 0); |
| if (vfinddev(dev, VCHR, &vp)) { | if (dev != NODEV && vfinddev(dev, VCHR, &vp)) { |
| if (vp->v_mount == NULL) | if (vp->v_mount == NULL) { |
| return (EINVAL); | return (EINVAL); |
| } | |
| stat = &(vp->v_mount->mnt_stat); | stat = &(vp->v_mount->mnt_stat); |
| error = VFS_STATFS(vp->v_mount, stat, td); | error = VFS_STATFS(vp->v_mount, stat, td); |
| if (error) | if (error) { |
| return (error); | return (error); |
| } | |
| lu.f_tfree = stat->f_bfree; | lu.f_tfree = stat->f_bfree; |
| lu.f_tinode = stat->f_ffree; | lu.f_tinode = stat->f_ffree; |
| } | } |
| return (copyout(&lu, args->ubuf, sizeof(lu))); | return (copyout(&lu, args->ubuf, sizeof(lu))); |
| } | } |