projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
copyin & copyout now return EFAULT and all callers uniformly
[unix-history]
/
usr
/
src
/
sys
/
ufs
/
ffs
/
ffs_vnops.c
diff --git
a/usr/src/sys/ufs/ffs/ffs_vnops.c
b/usr/src/sys/ufs/ffs/ffs_vnops.c
index
e0ba499
..
a8a37f9
100644
(file)
--- a/
usr/src/sys/ufs/ffs/ffs_vnops.c
+++ b/
usr/src/sys/ufs/ffs/ffs_vnops.c
@@
-1,4
+1,4
@@
-/* ffs_vnops.c 4.4
2 82/11/13
*/
+/* ffs_vnops.c 4.4
6 82/12/28
*/
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
@@
-496,8
+496,11
@@
stat1(ip, ub)
ds.st_rdev = (dev_t)ip->i_rdev;
ds.st_size = ip->i_size;
ds.st_atime = ip->i_atime;
ds.st_rdev = (dev_t)ip->i_rdev;
ds.st_size = ip->i_size;
ds.st_atime = ip->i_atime;
+ ds.st_spare1 = 0;
ds.st_mtime = ip->i_mtime;
ds.st_mtime = ip->i_mtime;
+ ds.st_spare2 = 0;
ds.st_ctime = ip->i_ctime;
ds.st_ctime = ip->i_ctime;
+ ds.st_spare3 = 0;
/* this doesn't belong here */
if ((ip->i_mode&IFMT) == IFBLK)
ds.st_blksize = BLKDEV_IOSIZE;
/* this doesn't belong here */
if ((ip->i_mode&IFMT) == IFBLK)
ds.st_blksize = BLKDEV_IOSIZE;
@@
-505,8
+508,8
@@
stat1(ip, ub)
ds.st_blksize = MAXBSIZE;
else
ds.st_blksize = ip->i_fs->fs_bsize;
ds.st_blksize = MAXBSIZE;
else
ds.st_blksize = ip->i_fs->fs_bsize;
- if (copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds)) < 0)
-
u.u_error = EFAULT
;
+ ds.st_spare4[0] = ds.st_spare4[1] = ds.st_spare4[2] = 0;
+
u.u_error = copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds))
;
}
/*
}
/*
@@
-734,9
+737,8
@@
outime()
uap = (struct a *)u.u_ap;
if ((ip = owner(1)) == NULL)
return;
uap = (struct a *)u.u_ap;
if ((ip = owner(1)) == NULL)
return;
- if (copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv))) {
- u.u_error = EFAULT;
- } else {
+ u.u_error = copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv));
+ if (u.u_error == 0) {
ip->i_flag |= IACC|IUPD|ICHG;
tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
tv1.tv_sec = tv[1]; tv1.tv_usec = 0;
ip->i_flag |= IACC|IUPD|ICHG;
tv0.tv_sec = tv[0]; tv0.tv_usec = 0;
tv1.tv_sec = tv[1]; tv1.tv_usec = 0;
@@
-775,22
+777,22
@@
flock()
return;
}
cmd = uap->how;
return;
}
cmd = uap->how;
- flags = u.u_pofile[uap->fd] & (
SHLOCK|
EXLOCK);
+ flags = u.u_pofile[uap->fd] & (
UF_SHLOCK|UF_
EXLOCK);
if (cmd&FUNLOCK) {
if (flags == 0) {
u.u_error = EINVAL;
return;
}
funlocki(fp->f_inode, flags);
if (cmd&FUNLOCK) {
if (flags == 0) {
u.u_error = EINVAL;
return;
}
funlocki(fp->f_inode, flags);
- u.u_pofile[uap->fd] &= ~(
SHLOCK|
EXLOCK);
+ u.u_pofile[uap->fd] &= ~(
UF_SHLOCK|UF_
EXLOCK);
return;
}
/*
* No reason to write lock a file we've already
* write locked, similarly with a read lock.
*/
return;
}
/*
* No reason to write lock a file we've already
* write locked, similarly with a read lock.
*/
- if ((flags&EXLOCK) && (cmd&FEXLOCK) ||
- (flags&SHLOCK) && (cmd&FSHLOCK))
+ if ((flags&
UF_
EXLOCK) && (cmd&FEXLOCK) ||
+ (flags&
UF_
SHLOCK) && (cmd&FSHLOCK))
return;
u.u_pofile[uap->fd] = flocki(fp->f_inode, u.u_pofile[uap->fd], cmd);
}
return;
u.u_pofile[uap->fd] = flocki(fp->f_inode, u.u_pofile[uap->fd], cmd);
}
@@
-995,7
+997,7
@@
rename()
*/
if ((xp->i_mode&IFMT) == IFDIR) {
if (!dirempty(xp)) {
*/
if ((xp->i_mode&IFMT) == IFDIR) {
if (!dirempty(xp)) {
- u.u_error = E
EXIST; /* XXX */
+ u.u_error = E
NOTEMPTY;
goto bad;
}
if (!doingdirectory) {
goto bad;
}
if (!doingdirectory) {