Date: Fri, 14 Jul 2006 16:11:44 GMT From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 101569 for review Message-ID: <200607141611.k6EGBifR005043@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=101569 Change 101569 by jhb@jhb_mutex on 2006/07/14 16:11:31 Add conditional VFS Giant locking to svr4_sys_resolvepath() and mark MPSAFE. Affected files ... .. //depot/projects/smpng/sys/compat/svr4/svr4_misc.c#52 edit .. //depot/projects/smpng/sys/compat/svr4/syscalls.master#19 edit .. //depot/projects/smpng/sys/notes#81 edit Differences ... ==== //depot/projects/smpng/sys/compat/svr4/svr4_misc.c#52 (text+ko) ==== @@ -1601,12 +1601,14 @@ struct nameidata nd; int error, *retval = td->td_retval; unsigned int ncopy; + int vfslocked; - NDINIT(&nd, LOOKUP, NOFOLLOW | SAVENAME, UIO_USERSPACE, + NDINIT(&nd, LOOKUP, NOFOLLOW | SAVENAME | MPSAFE, UIO_USERSPACE, uap->path, td); if ((error = namei(&nd)) != 0) return error; + vfslocked = NDHASGIANT(&nd); ncopy = min(uap->bufsiz, strlen(nd.ni_cnd.cn_pnbuf) + 1); if ((error = copyout(nd.ni_cnd.cn_pnbuf, uap->buf, ncopy)) != 0) @@ -1616,5 +1618,6 @@ bad: NDFREE(&nd, NDF_ONLY_PNBUF); vput(nd.ni_vp); + VFS_UNLOCK_GIANT(vfslocked); return error; } ==== //depot/projects/smpng/sys/compat/svr4/syscalls.master#19 (text+ko) ==== @@ -320,7 +320,7 @@ 206 AUE_NULL UNIMPL schedctl 207 AUE_NULL UNIMPL pset 208 AUE_NULL UNIMPL whoknows -209 AUE_NULL STD { int svr4_sys_resolvepath(const char *path, \ +209 AUE_NULL MSTD { int svr4_sys_resolvepath(const char *path, \ char *buf, size_t bufsiz); } 210 AUE_NULL UNIMPL signotifywait 211 AUE_NULL UNIMPL lwp_sigredirect ==== //depot/projects/smpng/sys/notes#81 (text+ko) ==== @@ -88,8 +88,8 @@ - svr4_sys_getmsg() - svr4_sys_putmsg() - svr4_sys_waitsys() - - svr4_sys_fchroot() - - svr4_sys_resolvepath() + + svr4_sys_fchroot() + + svr4_sys_resolvepath() + linux + linux_uselib() + ibcs2
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200607141611.k6EGBifR005043>