aboutsummaryrefslogtreecommitdiff
path: root/sys/gnu
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2001-01-27 00:01:31 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2001-01-27 00:01:31 +0000
commitba88dfc73375c2729cafdc4c1da0c84e720b4c29 (patch)
tree736b37523fefba09638b90d177dab23b40c2ce3d /sys/gnu
parentf0ae4fa2db4779c0b62db45a8135101e444b31d0 (diff)
downloadsrc-ba88dfc73375c2729cafdc4c1da0c84e720b4c29.tar.gz
src-ba88dfc73375c2729cafdc4c1da0c84e720b4c29.zip
Back out proc locking to protect p_ucred for obtaining additional
references along with the actual obtaining of additional references.
Notes
Notes: svn path=/head/; revision=71699
Diffstat (limited to 'sys/gnu')
-rw-r--r--sys/gnu/ext2fs/ext2_vfsops.c27
-rw-r--r--sys/gnu/fs/ext2fs/ext2_vfsops.c27
2 files changed, 6 insertions, 48 deletions
diff --git a/sys/gnu/ext2fs/ext2_vfsops.c b/sys/gnu/ext2fs/ext2_vfsops.c
index e7dfbf26ed9c..7119096b3408 100644
--- a/sys/gnu/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/ext2fs/ext2_vfsops.c
@@ -187,7 +187,6 @@ ext2_mount(mp, path, data, ndp, p)
struct vnode *devvp;
struct ufs_args args;
struct ufsmount *ump = 0;
- struct ucred *uc;
register struct ext2_sb_info *fs;
size_t size;
int error, flags;
@@ -232,17 +231,11 @@ ext2_mount(mp, path, data, ndp, p)
*/
if (suser(p)) {
vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
- PROC_LOCK(p);
- uc = p->p_ucred;
- crhold(uc);
- PROC_UNLOCK(p);
if ((error = VOP_ACCESS(devvp, VREAD | VWRITE,
- uc, p)) != 0) {
- crfree(uc);
+ p->p_ucred, p)) != 0) {
VOP_UNLOCK(devvp, 0, p);
return (error);
}
- crfree(uc);
VOP_UNLOCK(devvp, 0, p);
}
@@ -294,16 +287,10 @@ ext2_mount(mp, path, data, ndp, p)
if ((mp->mnt_flag & MNT_RDONLY) == 0)
accessmode |= VWRITE;
vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
- PROC_LOCK(p);
- uc = p->p_ucred;
- crhold(uc);
- PROC_UNLOCK(p);
- if ((error = VOP_ACCESS(devvp, accessmode, uc, p)) != 0) {
- crfree(uc);
+ if ((error = VOP_ACCESS(devvp, accessmode, p->p_ucred, p)) != 0) {
vput(devvp);
return (error);
}
- crfree(uc);
VOP_UNLOCK(devvp, 0, p);
}
@@ -629,7 +616,6 @@ ext2_mountfs(devvp, mp, p)
{
register struct ufsmount *ump;
struct buf *bp;
- struct ucred *uc;
register struct ext2_sb_info *fs;
struct ext2_super_block * es;
dev_t dev = devvp->v_rdev;
@@ -648,15 +634,8 @@ ext2_mountfs(devvp, mp, p)
return (error);
if (vcount(devvp) > 1 && devvp != rootvp)
return (EBUSY);
- PROC_LOCK(p);
- uc = p->p_ucred;
- crhold(uc);
- PROC_UNLOCK(p);
- if ((error = vinvalbuf(devvp, V_SAVE, uc, p, 0, 0)) != 0) {
- crfree(uc);
+ if ((error = vinvalbuf(devvp, V_SAVE, p->p_ucred, p, 0, 0)) != 0)
return (error);
- }
- crfree(uc);
#ifdef READONLY
/* turn on this to force it to be read-only */
mp->mnt_flag |= MNT_RDONLY;
diff --git a/sys/gnu/fs/ext2fs/ext2_vfsops.c b/sys/gnu/fs/ext2fs/ext2_vfsops.c
index e7dfbf26ed9c..7119096b3408 100644
--- a/sys/gnu/fs/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/fs/ext2fs/ext2_vfsops.c
@@ -187,7 +187,6 @@ ext2_mount(mp, path, data, ndp, p)
struct vnode *devvp;
struct ufs_args args;
struct ufsmount *ump = 0;
- struct ucred *uc;
register struct ext2_sb_info *fs;
size_t size;
int error, flags;
@@ -232,17 +231,11 @@ ext2_mount(mp, path, data, ndp, p)
*/
if (suser(p)) {
vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
- PROC_LOCK(p);
- uc = p->p_ucred;
- crhold(uc);
- PROC_UNLOCK(p);
if ((error = VOP_ACCESS(devvp, VREAD | VWRITE,
- uc, p)) != 0) {
- crfree(uc);
+ p->p_ucred, p)) != 0) {
VOP_UNLOCK(devvp, 0, p);
return (error);
}
- crfree(uc);
VOP_UNLOCK(devvp, 0, p);
}
@@ -294,16 +287,10 @@ ext2_mount(mp, path, data, ndp, p)
if ((mp->mnt_flag & MNT_RDONLY) == 0)
accessmode |= VWRITE;
vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
- PROC_LOCK(p);
- uc = p->p_ucred;
- crhold(uc);
- PROC_UNLOCK(p);
- if ((error = VOP_ACCESS(devvp, accessmode, uc, p)) != 0) {
- crfree(uc);
+ if ((error = VOP_ACCESS(devvp, accessmode, p->p_ucred, p)) != 0) {
vput(devvp);
return (error);
}
- crfree(uc);
VOP_UNLOCK(devvp, 0, p);
}
@@ -629,7 +616,6 @@ ext2_mountfs(devvp, mp, p)
{
register struct ufsmount *ump;
struct buf *bp;
- struct ucred *uc;
register struct ext2_sb_info *fs;
struct ext2_super_block * es;
dev_t dev = devvp->v_rdev;
@@ -648,15 +634,8 @@ ext2_mountfs(devvp, mp, p)
return (error);
if (vcount(devvp) > 1 && devvp != rootvp)
return (EBUSY);
- PROC_LOCK(p);
- uc = p->p_ucred;
- crhold(uc);
- PROC_UNLOCK(p);
- if ((error = vinvalbuf(devvp, V_SAVE, uc, p, 0, 0)) != 0) {
- crfree(uc);
+ if ((error = vinvalbuf(devvp, V_SAVE, p->p_ucred, p, 0, 0)) != 0)
return (error);
- }
- crfree(uc);
#ifdef READONLY
/* turn on this to force it to be read-only */
mp->mnt_flag |= MNT_RDONLY;