From 25fb35966e0db0574e4fca4d520c6239ef23482e Mon Sep 17 00:00:00 2001 From: Jesse Gross Date: Tue, 2 Nov 2010 15:43:32 -0700 Subject: [PATCH] datapath: Work around debugging for csum_and_copy_to_user(). Certain versions of XenServer add debugging to csum_and_copy_to_user() in such a way that it changes the function signature. This adds a check and a workaround to allow us to build on these versions. Signed-off-by: Jesse Gross Acked-by: Ben Pfaff --- acinclude.m4 | 3 +++ datapath/linux-2.6/compat-2.6/include/net/checksum.h | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/acinclude.m4 b/acinclude.m4 index 0af7fd0fc..2296dbd97 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -156,6 +156,9 @@ AC_DEFUN([OVS_CHECK_LINUX26_COMPAT], [ mkdir -p datapath/linux-2.6 : > datapath/linux-2.6/kcompat.h.new + OVS_GREP_IFELSE([$KSRC26/arch/x86/include/asm/checksum_32.h], [src_err,], + [OVS_DEFINE([HAVE_CSUM_COPY_DBG])]) + OVS_GREP_IFELSE([$KSRC26/include/linux/err.h], [ERR_CAST], [OVS_DEFINE([HAVE_ERR_CAST])]) diff --git a/datapath/linux-2.6/compat-2.6/include/net/checksum.h b/datapath/linux-2.6/compat-2.6/include/net/checksum.h index 3b6debb1d..96fd3a698 100644 --- a/datapath/linux-2.6/compat-2.6/include/net/checksum.h +++ b/datapath/linux-2.6/compat-2.6/include/net/checksum.h @@ -10,4 +10,12 @@ static inline __wsum csum_unfold(__sum16 n) } #endif /* !HAVE_CSUM_UNFOLD */ +/* Workaround for debugging included in certain versions of XenServer. It only + * applies to 32-bit x86. + */ +#if defined(HAVE_CSUM_COPY_DBG) && defined(CONFIG_X86_32) +#define csum_and_copy_to_user(src, dst, len, sum, err_ptr) \ + csum_and_copy_to_user(src, dst, len, sum, NULL, err_ptr) +#endif + #endif /* checksum.h */ -- 2.43.0