summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Gross <jesse@nicira.com>2010-11-02 15:43:32 -0700
committerJesse Gross <jesse@nicira.com>2010-11-03 09:22:23 -0700
commit25fb35966e0db0574e4fca4d520c6239ef23482e (patch)
tree521b3f34011bdd4173ac9527b0bfad6cad37f2ca
parent7507ec485f72c2ec56731ee5c9790a20d6d694fd (diff)
downloadopenvswitch-25fb35966e0db0574e4fca4d520c6239ef23482e.tar.gz
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 <jesse@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
-rw-r--r--acinclude.m43
-rw-r--r--datapath/linux-2.6/compat-2.6/include/net/checksum.h8
2 files changed, 11 insertions, 0 deletions
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 */