Date: Sun, 9 Nov 2003 20:12:49 -0800 (PST) From: Robert Watson <rwatson@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 41865 for review Message-ID: <200311100412.hAA4Cnc0068403@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=41865 Change 41865 by rwatson@rwatson_paprika on 2003/11/09 20:11:58 Push Giant further into mac_get_fd() and mac_set_fd(): only Grab Giant for VFS stuff, it's not needed for file descriptors or pipes. Affected files ... .. //depot/projects/trustedbsd/mac/sys/kern/kern_mac.c#427 edit Differences ... ==== //depot/projects/trustedbsd/mac/sys/kern/kern_mac.c#427 (text+ko) ==== @@ -740,7 +740,6 @@ } buffer = malloc(mac.m_buflen, M_MACTEMP, M_WAITOK | M_ZERO); - mtx_lock(&Giant); /* VFS */ error = fget(td, uap->fd, &fp); if (error) goto out; @@ -751,6 +750,7 @@ case DTYPE_VNODE: vp = fp->f_vnode; + mtx_lock(&Giant); /* VFS */ intlabel = mac_vnode_label_alloc(); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); mac_copy_vnode_label(vp->v_label, intlabel); @@ -758,6 +758,7 @@ error = mac_externalize_vnode_label(intlabel, elements, buffer, mac.m_buflen); mac_vnode_label_free(intlabel); + mtx_unlock(&Giant); /* VFS */ break; case DTYPE_PIPE: pipe = fp->f_data; @@ -777,7 +778,6 @@ if (error == 0) error = copyout(buffer, mac.m_string, strlen(buffer)+1); out: - mtx_unlock(&Giant); /* VFS */ free(buffer, M_MACTEMP); free(elements, M_MACTEMP); return (error); @@ -922,8 +922,6 @@ return (error); } - mtx_lock(&Giant); /* VFS */ - error = fget(td, uap->fd, &fp); if (error) goto out; @@ -939,6 +937,7 @@ } vp = fp->f_vnode; + mtx_lock(&Giant); /* VFS */ error = vn_start_write(vp, &mp, V_WAIT | PCATCH); if (error != 0) { mac_vnode_label_free(intlabel); @@ -950,6 +949,7 @@ VOP_UNLOCK(vp, 0, td); vn_finished_write(mp); mac_vnode_label_free(intlabel); + mtx_unlock(&Giant); /* VFS */ break; case DTYPE_PIPE: @@ -968,13 +968,9 @@ default: error = EINVAL; } - fdrop(fp, td); out: - mtx_unlock(&Giant); /* VFS */ - free(buffer, M_MACTEMP); - return (error); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200311100412.hAA4Cnc0068403>