open-vm-tools fails on a recent sup to CURRENT
Michael Proto
mike at jellydonut.org
Tue Oct 21 23:37:12 UTC 2008
On Tue, Oct 21, 2008 at 5:36 AM, Alexey Shuvaev <
shuvaev at physik.uni-wuerzburg.de> wrote:
> On Tue, Oct 14, 2008 at 07:17:29PM -0400, Michael Proto wrote:
> > Has anyone started seeing failures of ports/emulators/open-vm-tools
> builds
> > with a recent current? I csup-ed my source recently (as of 20080926),
> > rebuilt world and my kernel, and open-vm-tools builds fail in the vmhgfs
> > module with the following:
> >
> >
> > ...
> > cc1: warnings being treated as errors
> > vfsops.c: In function 'HgfsVfsMount':
> > vfsops.c:142: warning: implicit declaration of function 'suser'
> > vfsops.c:142: warning: nested extern declaration of 'suser'
> > *** Error code 1
> > ...
> >
> > I've tried setting CFLAGS optimizations to -Os (my default), -O, -O2 and
> no
> > optimizations and it fails with the same error every time. Has anyone
> else
> > using CURRENT in VMware seen this error recently? Any ideas?
> >
> This is due to API change suser() -> priv_check().
> Have a look at
> http://www.freebsd.org/cgi/cvsweb.cgi/ports/x11/nvidia-driver/Makefile
> (revision 1.81) for example.
> I am not sure about "PRIV_DRIVER" argument, but you can try to replace
> "suser(CURTHREAD)" to "priv_check(CURTHREAD, PRIV_DRIVER)"
> in the open-vm-tools sources.
>
> Alexey.
>
Thanks for that bit of information! With the following patch I was able to
get open-vm-tools to successfully compile:
--- modules/freebsd/vmhgfs/vfsops.c.old 2008-07-01 18:31:11.000000000 -0400
+++ modules/freebsd/vmhgfs/vfsops.c 2008-10-21 16:50:23.000000000 -0400
@@ -139,7 +139,7 @@
* Since Hgfs requires the caller to be root, only allow mount attempts
made
* by the superuser.
*/
- if ((ret = suser(td)) != 0) {
+ if ((ret = priv_check(td, PRIV_DRIVER)) != 0) {
return ret;
}
--- modules/freebsd/vmblock/vnops.c.old 2008-07-01 18:31:09.000000000 -0400
+++ modules/freebsd/vmblock/vnops.c 2008-10-21 19:32:27.000000000 -0400
@@ -723,7 +723,7 @@
* NB: Allowing only the superuser to open this directory breaks
* readdir() of the filesystem root for non-privileged users.
*/
- if ((retval = suser(ap->a_td)) == 0) {
+ if ((retval = priv_check(ap->a_td, PRIV_DRIVER)) == 0) {
#if __FreeBSD_version >= 700000
fp = ap->a_fp;
#else
I cannot say if makes these modules work or not, as I don't use them (my
main reason for having open-vm-tools is for vmware-guestd and its ability to
sync the VM's clock to the host), but the port compiles cleanly with this.
Thanks very much!
-Proto
More information about the freebsd-ports
mailing list