From: VMware, Inc <> Date: Thu, 17 Jun 2010 22:16:38 +0000 (-0700) Subject: VSOCK: fix compile warning on RHEL 6 X-Git-Tag: 2010.06.16-268169~33 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4a6a9fa7a6cb282994a330c17048c78dce856a97;p=thirdparty%2Fopen-vm-tools.git VSOCK: fix compile warning on RHEL 6 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 --- 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 index 000000000..8ee6a1974 --- /dev/null +++ b/open-vm-tools/modules/linux/shared/autoconf/netcreate_num_params.c @@ -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 + +static int TestCreate(struct net *net, + struct socket *sock, int protocol, + int kern) +{ + return 0; +} + +struct net_proto_family testFamily = { + .create = TestCreate, +}; + +#endif diff --git a/open-vm-tools/modules/linux/vsock/Makefile.kernel b/open-vm-tools/modules/linux/vsock/Makefile.kernel index 47ef5f3ad..9776c55ee 100644 --- a/open-vm-tools/modules/linux/vsock/Makefile.kernel +++ b/open-vm-tools/modules/linux/vsock/Makefile.kernel @@ -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 ) diff --git a/open-vm-tools/modules/linux/vsock/linux/af_vsock.c b/open-vm-tools/modules/linux/vsock/linux/af_vsock.c index bb3f3170c..2903f0423 100644 --- a/open-vm-tools/modules/linux/vsock/linux/af_vsock.c +++ b/open-vm-tools/modules/linux/vsock/linux/af_vsock.c @@ -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 )