svn commit: r343762 - head/sys/kern
Conrad Meyer
cem at FreeBSD.org
Tue Feb 5 04:47:22 UTC 2019
Author: cem
Date: Tue Feb 5 04:47:21 2019
New Revision: 343762
URL: https://svnweb.freebsd.org/changeset/base/343762
Log:
extattr_list_vp: Narrow locked section somewhat
Suggested by: mjg
Reviewed by: kib, mjg
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D19083
Modified:
head/sys/kern/vfs_extattr.c
Modified: head/sys/kern/vfs_extattr.c
==============================================================================
--- head/sys/kern/vfs_extattr.c Tue Feb 5 03:32:58 2019 (r343761)
+++ head/sys/kern/vfs_extattr.c Tue Feb 5 04:47:21 2019 (r343762)
@@ -633,8 +633,6 @@ extattr_list_vp(struct vnode *vp, int attrnamespace, v
if (nbytes > IOSIZE_MAX)
return (EINVAL);
- vn_lock(vp, LK_SHARED | LK_RETRY);
-
auiop = NULL;
sizep = NULL;
cnt = 0;
@@ -653,24 +651,25 @@ extattr_list_vp(struct vnode *vp, int attrnamespace, v
} else
sizep = &size;
+ vn_lock(vp, LK_SHARED | LK_RETRY);
+
#ifdef MAC
error = mac_vnode_check_listextattr(td->td_ucred, vp, attrnamespace);
- if (error)
- goto done;
+ if (error) {
+ VOP_UNLOCK(vp, 0);
+ return (error);
+ }
#endif
error = VOP_LISTEXTATTR(vp, attrnamespace, auiop, sizep,
td->td_ucred, td);
+ VOP_UNLOCK(vp, 0);
if (auiop != NULL) {
cnt -= auio.uio_resid;
td->td_retval[0] = cnt;
} else
td->td_retval[0] = size;
-#ifdef MAC
-done:
-#endif
- VOP_UNLOCK(vp, 0);
return (error);
}
More information about the svn-src-all
mailing list