datapath: Work around debugging for csum_and_copy_to_user().
authorJesse Gross <jesse@nicira.com>
Tue, 2 Nov 2010 22:43:32 +0000 (15:43 -0700)
committerJesse Gross <jesse@nicira.com>
Wed, 3 Nov 2010 16:22:23 +0000 (09:22 -0700)
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>
acinclude.m4
datapath/linux-2.6/compat-2.6/include/net/checksum.h

index 0af7fd0..2296dbd 100644 (file)
@@ -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])])
 
index 3b6debb..96fd3a6 100644 (file)
@@ -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 */