summaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
authorDavid Greenman <dg@FreeBSD.org>1995-10-22 09:32:48 +0000
committerDavid Greenman <dg@FreeBSD.org>1995-10-22 09:32:48 +0000
commitd68a41903e7e98eb36b24c2678dd1552fabd047a (patch)
tree67d743dd75dac0605db551f3d4f64632e50167ea /sys/kern
parent6928ec333033faf66d7249b94e941df99e28f031 (diff)
Notes
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_extattr.c80
-rw-r--r--sys/kern/vfs_lookup.c40
-rw-r--r--sys/kern/vfs_syscalls.c80
-rw-r--r--sys/kern/vfs_vnops.c15
4 files changed, 66 insertions, 149 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c
index ffee2d650499..b0cf35c39afc 100644
--- a/sys/kern/vfs_extattr.c
+++ b/sys/kern/vfs_extattr.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
- * $Id: vfs_syscalls.c,v 1.33 1995/08/28 09:18:56 julian Exp $
+ * $Id: vfs_syscalls.c,v 1.34 1995/10/08 00:06:10 swallace Exp $
*/
#include <sys/param.h>
@@ -1395,13 +1395,9 @@ chflags(p, uap, retval)
vp = nd.ni_vp;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_flags = uap->flags;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_flags = uap->flags;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
vput(vp);
return (error);
}
@@ -1431,13 +1427,9 @@ fchflags(p, uap, retval)
vp = (struct vnode *)fp->f_data;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_flags = uap->flags;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_flags = uap->flags;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
VOP_UNLOCK(vp);
return (error);
}
@@ -1468,13 +1460,9 @@ chmod(p, uap, retval)
vp = nd.ni_vp;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_mode = uap->mode & ALLPERMS;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_mode = uap->mode & ALLPERMS;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
vput(vp);
return (error);
}
@@ -1504,13 +1492,9 @@ fchmod(p, uap, retval)
vp = (struct vnode *)fp->f_data;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_mode = uap->mode & ALLPERMS;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_mode = uap->mode & ALLPERMS;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
VOP_UNLOCK(vp);
return (error);
}
@@ -1542,14 +1526,10 @@ chown(p, uap, retval)
vp = nd.ni_vp;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_uid = uap->uid;
- vattr.va_gid = uap->gid;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_uid = uap->uid;
+ vattr.va_gid = uap->gid;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
vput(vp);
return (error);
}
@@ -1580,14 +1560,10 @@ fchown(p, uap, retval)
vp = (struct vnode *)fp->f_data;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_uid = uap->uid;
- vattr.va_gid = uap->gid;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_uid = uap->uid;
+ vattr.va_gid = uap->gid;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
VOP_UNLOCK(vp);
return (error);
}
@@ -1629,15 +1605,11 @@ utimes(p, uap, retval)
vp = nd.ni_vp;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- vattr.va_atime.ts_sec = tv[0].tv_sec;
- vattr.va_atime.ts_nsec = tv[0].tv_usec * 1000;
- vattr.va_mtime.ts_sec = tv[1].tv_sec;
- vattr.va_mtime.ts_nsec = tv[1].tv_usec * 1000;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ vattr.va_atime.ts_sec = tv[0].tv_sec;
+ vattr.va_atime.ts_nsec = tv[0].tv_usec * 1000;
+ vattr.va_mtime.ts_sec = tv[1].tv_sec;
+ vattr.va_mtime.ts_nsec = tv[1].tv_usec * 1000;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
vput(vp);
return (error);
}
diff --git a/sys/kern/vfs_lookup.c b/sys/kern/vfs_lookup.c
index 35a7a691d184..0194dd93156a 100644
--- a/sys/kern/vfs_lookup.c
+++ b/sys/kern/vfs_lookup.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_lookup.c 8.4 (Berkeley) 2/16/94
- * $Id: vfs_lookup.c,v 1.8 1995/07/31 00:35:46 bde Exp $
+ * $Id: vfs_lookup.c,v 1.9 1995/08/24 10:16:59 dfr Exp $
*/
#include <sys/param.h>
@@ -422,7 +422,7 @@ unionlookup:
* If creating and at end of pathname, then can consider
* allowing file to be created.
*/
- if (rdonly || (ndp->ni_dvp->v_mount->mnt_flag & MNT_RDONLY)) {
+ if (rdonly) {
error = EROFS;
goto bad;
}
@@ -510,19 +510,12 @@ nextname:
goto dirloop;
}
/*
- * Check for read-only file systems.
+ * Disallow directory write attempts on read-only file systems.
*/
- if (cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME) {
- /*
- * Disallow directory write attempts on read-only
- * file systems.
- */
- if (rdonly || (dp->v_mount->mnt_flag & MNT_RDONLY) ||
- (wantparent &&
- (ndp->ni_dvp->v_mount->mnt_flag & MNT_RDONLY))) {
- error = EROFS;
- goto bad2;
- }
+ if (rdonly &&
+ (cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME)) {
+ error = EROFS;
+ goto bad2;
}
if (cnp->cn_flags & SAVESTART) {
ndp->ni_startdir = ndp->ni_dvp;
@@ -638,7 +631,7 @@ relookup(dvp, vpp, cnp)
* If creating and at end of pathname, then can consider
* allowing file to be created.
*/
- if (rdonly || (dvp->v_mount->mnt_flag & MNT_RDONLY)) {
+ if (rdonly) {
error = EROFS;
goto bad;
}
@@ -663,19 +656,12 @@ relookup(dvp, vpp, cnp)
#endif
/*
- * Check for read-only file systems.
+ * Disallow directory write attempts on read-only file systems.
*/
- if (cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME) {
- /*
- * Disallow directory write attempts on read-only
- * file systems.
- */
- if (rdonly || (dp->v_mount->mnt_flag & MNT_RDONLY) ||
- (wantparent &&
- (dvp->v_mount->mnt_flag & MNT_RDONLY))) {
- error = EROFS;
- goto bad2;
- }
+ if (rdonly &&
+ (cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME)) {
+ error = EROFS;
+ goto bad2;
}
/* ASSERT(dvp == ndp->ni_startdir) */
if (cnp->cn_flags & SAVESTART)
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index ffee2d650499..b0cf35c39afc 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
- * $Id: vfs_syscalls.c,v 1.33 1995/08/28 09:18:56 julian Exp $
+ * $Id: vfs_syscalls.c,v 1.34 1995/10/08 00:06:10 swallace Exp $
*/
#include <sys/param.h>
@@ -1395,13 +1395,9 @@ chflags(p, uap, retval)
vp = nd.ni_vp;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_flags = uap->flags;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_flags = uap->flags;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
vput(vp);
return (error);
}
@@ -1431,13 +1427,9 @@ fchflags(p, uap, retval)
vp = (struct vnode *)fp->f_data;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_flags = uap->flags;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_flags = uap->flags;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
VOP_UNLOCK(vp);
return (error);
}
@@ -1468,13 +1460,9 @@ chmod(p, uap, retval)
vp = nd.ni_vp;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_mode = uap->mode & ALLPERMS;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_mode = uap->mode & ALLPERMS;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
vput(vp);
return (error);
}
@@ -1504,13 +1492,9 @@ fchmod(p, uap, retval)
vp = (struct vnode *)fp->f_data;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_mode = uap->mode & ALLPERMS;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_mode = uap->mode & ALLPERMS;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
VOP_UNLOCK(vp);
return (error);
}
@@ -1542,14 +1526,10 @@ chown(p, uap, retval)
vp = nd.ni_vp;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_uid = uap->uid;
- vattr.va_gid = uap->gid;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_uid = uap->uid;
+ vattr.va_gid = uap->gid;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
vput(vp);
return (error);
}
@@ -1580,14 +1560,10 @@ fchown(p, uap, retval)
vp = (struct vnode *)fp->f_data;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- VATTR_NULL(&vattr);
- vattr.va_uid = uap->uid;
- vattr.va_gid = uap->gid;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ VATTR_NULL(&vattr);
+ vattr.va_uid = uap->uid;
+ vattr.va_gid = uap->gid;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
VOP_UNLOCK(vp);
return (error);
}
@@ -1629,15 +1605,11 @@ utimes(p, uap, retval)
vp = nd.ni_vp;
LEASE_CHECK(vp, p, p->p_ucred, LEASE_WRITE);
VOP_LOCK(vp);
- if (vp->v_mount->mnt_flag & MNT_RDONLY)
- error = EROFS;
- else {
- vattr.va_atime.ts_sec = tv[0].tv_sec;
- vattr.va_atime.ts_nsec = tv[0].tv_usec * 1000;
- vattr.va_mtime.ts_sec = tv[1].tv_sec;
- vattr.va_mtime.ts_nsec = tv[1].tv_usec * 1000;
- error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
- }
+ vattr.va_atime.ts_sec = tv[0].tv_sec;
+ vattr.va_atime.ts_nsec = tv[0].tv_usec * 1000;
+ vattr.va_mtime.ts_sec = tv[1].tv_sec;
+ vattr.va_mtime.ts_nsec = tv[1].tv_usec * 1000;
+ error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
vput(vp);
return (error);
}
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index a2cc2f714d41..46e897f70092 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_vnops.c 8.2 (Berkeley) 1/21/94
- * $Id: vfs_vnops.c,v 1.17 1995/07/20 09:43:04 davidg Exp $
+ * $Id: vfs_vnops.c,v 1.18 1995/10/06 09:43:32 phk Exp $
*/
#include <sys/param.h>
@@ -194,19 +194,6 @@ vn_writechk(vp)
{
/*
- * Disallow write attempts on read-only file systems;
- * unless the file is a socket or a block or character
- * device resident on the file system.
- */
- if (vp->v_mount->mnt_flag & MNT_RDONLY) {
- switch (vp->v_type) {
- case VREG: case VDIR: case VLNK:
- return (EROFS);
- default:
- break;
- }
- }
- /*
* If there's shared text associated with
* the vnode, try to free it up once. If
* we fail, we can't allow writing.