--- /dev/null
+From 9ce357795ef208faa0d59894d9d119a7434e37f3 Mon Sep 17 00:00:00 2001
+From: karl beldan <karl.beldan@gmail.com>
+Date: Thu, 29 Jan 2015 11:10:22 +0100
+Subject: lib/checksum.c: fix build for generic csum_tcpudp_nofold
+
+From: karl beldan <karl.beldan@gmail.com>
+
+commit 9ce357795ef208faa0d59894d9d119a7434e37f3 upstream.
+
+Fixed commit added from64to32 under _#ifndef do_csum_ but used it
+under _#ifndef csum_tcpudp_nofold_, breaking some builds (Fengguang's
+robot reported TILEGX's). Move from64to32 under the latter.
+
+Fixes: 150ae0e94634 ("lib/checksum.c: fix carry in csum_tcpudp_nofold")
+Reported-by: kbuild test robot <fengguang.wu@intel.com>
+Signed-off-by: Karl Beldan <karl.beldan@rivierawaves.com>
+Cc: Eric Dumazet <edumazet@google.com>
+Cc: David S. Miller <davem@davemloft.net>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ lib/checksum.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+--- a/lib/checksum.c
++++ b/lib/checksum.c
+@@ -47,15 +47,6 @@ static inline unsigned short from32to16(
+ return x;
+ }
+
+-static inline u32 from64to32(u64 x)
+-{
+- /* add up 32-bit and 32-bit for 32+c bit */
+- x = (x & 0xffffffff) + (x >> 32);
+- /* add up carry.. */
+- x = (x & 0xffffffff) + (x >> 32);
+- return (u32)x;
+-}
+-
+ static unsigned int do_csum(const unsigned char *buff, int len)
+ {
+ int odd;
+@@ -190,6 +181,15 @@ csum_partial_copy(const void *src, void
+ EXPORT_SYMBOL(csum_partial_copy);
+
+ #ifndef csum_tcpudp_nofold
++static inline u32 from64to32(u64 x)
++{
++ /* add up 32-bit and 32-bit for 32+c bit */
++ x = (x & 0xffffffff) + (x >> 32);
++ /* add up carry.. */
++ x = (x & 0xffffffff) + (x >> 32);
++ return (u32)x;
++}
++
+ __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
+ unsigned short len,
+ unsigned short proto,