From: "Bruce \"Brutus\" Curtis" <redacted>
Date: Mon, 6 Aug 2012 17:13:49 -0700
+ /*
+ * If friends haven't been made yet, our sk_friend
+ * still == NULL, then update with the ACK's friend
+ * value (the listen()er's sock addr) which is used
+ * as a place holder.
+ */
+ atomic_long_cmpxchg(&sk->sk_friend, 0,
+ (u64)skb->friend);
You probably want plain:
cmpxchg(&sk->sk_friend, NULL, skb->friend);
here.
Rather than using an expression that implies an equivalence between
the types 'long' and 'void *'