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