summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2000-04-16 01:35:30 +0000
committerrwatson <rwatson@FreeBSD.org>2000-04-16 01:35:30 +0000
commit95acaf111c752351e27954fe81f3c1ac78b49137 (patch)
tree690aebeeb54701ae7ef6d171202fad6d7708802e /sys
parent89dde410b723e292462c0d6b85365bc2ecfea194 (diff)
downloadFreeBSD-src-95acaf111c752351e27954fe81f3c1ac78b49137.zip
FreeBSD-src-95acaf111c752351e27954fe81f3c1ac78b49137.tar.gz
Fix two bugs in extended attribute support for UFS/FFS:
o Put back in {} removed during over-zealous cleanup of gratuitous debugging output during preparation for the commit. Due to the missing {}, writes on extended attributes always silently failed. Doh. o Don't unlock the target vnode if it's the backing vnode, as we don't lock the target vnode if it's the backing vnode.
Diffstat (limited to 'sys')
-rw-r--r--sys/ufs/ufs/ufs_extattr.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/ufs/ufs/ufs_extattr.c b/sys/ufs/ufs/ufs_extattr.c
index 1576f3e..05b2b58 100644
--- a/sys/ufs/ufs/ufs_extattr.c
+++ b/sys/ufs/ufs/ufs_extattr.c
@@ -649,9 +649,10 @@ ufs_extattr_set(struct vnode *vp, char *name, struct uio *uio,
if (error)
goto vopunlock_exit;
- if (local_aio.uio_resid != 0)
+ if (local_aio.uio_resid != 0) {
error = ENXIO;
goto vopunlock_exit;
+ }
/*
* Write out user data
@@ -663,7 +664,9 @@ ufs_extattr_set(struct vnode *vp, char *name, struct uio *uio,
vopunlock_exit:
uio->uio_offset = 0;
- VOP_UNLOCK(attribute->uele_backing_vnode, 0, p);
+
+ if (attribute->uele_backing_vnode != vp)
+ VOP_UNLOCK(attribute->uele_backing_vnode, 0, p);
return (error);
}
OpenPOWER on IntegriCloud