]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
VSOCK: fix compile warning on RHEL 6
authorVMware, Inc <>
Thu, 17 Jun 2010 22:16:38 +0000 (15:16 -0700)
committerMarcelo Vanzin <mvanzin@vmware.com>
Thu, 17 Jun 2010 22:16:38 +0000 (15:16 -0700)
Compiling vsock on RHEL6 produces following warning:

/home/test/dyno/vsock-only/linux/af_vsock.c:333:
warning: initialization from incompatible pointer type

We tried dealing with it in CS 1017526, but RedHat backported the
change to 2.6.32 making our check that relied on kernel version
ineffective.

Signed-off-by: Marcelo Vanzin <mvanzin@vmware.com>
open-vm-tools/modules/linux/shared/autoconf/netcreate_num_params.c [new file with mode: 0644]
open-vm-tools/modules/linux/vsock/Makefile.kernel
open-vm-tools/modules/linux/vsock/linux/af_vsock.c

diff --git a/open-vm-tools/modules/linux/shared/autoconf/netcreate_num_params.c b/open-vm-tools/modules/linux/shared/autoconf/netcreate_num_params.c
new file mode 100644 (file)
index 0000000..8ee6a19
--- /dev/null
@@ -0,0 +1,48 @@
+/*********************************************************
+ * Copyright (C) 2010 VMware, Inc. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation version 2 and no later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ *********************************************************/
+
+/*
+ * During 2.6.33 merge window net_proto_ops->create() method was changed -
+ * a new 'kern' field, signalling whether socket is being created by kernel
+ * or userspace application, was added to it. Unfortunately, some
+ * distributions, such as RHEL 6, have backported the change to earlier
+ * kernels, so we can't rely solely on kernel version to determine number of
+ * arguments.
+ */
+
+#include "compat_version.h"
+#include "compat_autoconf.h"
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 32)
+#   error This compile test intentionally fails.
+#else
+
+#include <linux/net.h>
+
+static int TestCreate(struct net *net,
+                      struct socket *sock, int protocol,
+                      int kern)
+{
+   return 0;
+}
+
+struct net_proto_family testFamily = {
+   .create = TestCreate,
+};
+
+#endif
index 47ef5f3ad15c4f3ce7b6766980a17ffeb3a3fd34..9776c55eec7b7d08bb2404bcc192535935c72fdd 100644 (file)
@@ -28,6 +28,7 @@ INCLUDE += -I$(SRCROOT)/common
 EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
 EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/epoll.c,   -DVMW_HAVE_EPOLL, )
 EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/setnice.c, -DVMW_HAVE_SET_USER_NICE, )
+EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/netcreate_num_params.c, -DVMW_NETCREATE_KERNARG, )
 
 # This test is inverted.
 EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/sk_filter.c,, -DVMW_HAVE_NEW_SKFILTER )
index bb3f3170ce61d4387b899314a5b9afcc4afcc198..2903f042329d9b979a853d7cb1f9efd767e191c6 100644 (file)
@@ -235,7 +235,7 @@ static int VSockVmciCreate(
                            struct net *net,
 #endif
                            struct socket *sock, int protocol
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 33)
+#ifdef VMW_NETCREATE_KERNARG
                            , int kern
 #endif
                           );
@@ -4727,7 +4727,7 @@ VSockVmciCreate(
 #endif
                 struct socket *sock,  // IN
                 int protocol          // IN
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 33)
+#ifdef VMW_NETCREATE_KERNARG
                 , int kern            // IN
 #endif
                )