Subject: linux 3.10.27 and patch-3.10.25-vs2.3.6.8.diff
From: Corey Wright <undefined@pobox.com>
Date: Wed, 15 Jan 2014 23:08:30 -0600
Wed, 15 Jan 2014 23:08:30 -0600
applying patch-3.10.25-vs2.3.6.8.diff to linux-3.10.27 fails.

the introduction of memset to inet_diag.c invalidated the context of three
hunks.

the attached patch fixes the failure (and Makefile's EXTRAVERSION, too).

instructions:
1. acquire linux-3.10.27
2. apply patch-3.10.25-vs2.3.6.8.diff
3. apply the attached patch-3.10.25-27-vs2.3.6.8.diff

i've successfully built and tested the resulting kernel against testme.sh and
testfs.sh in virtualbox.

corey
--
undefined@pobox.com


diff -urNpd a/linux-3.10.27-vs2.3.6.8/Makefile b/linux-3.10.27-vs2.3.6.8/Makefile
--- a/linux-3.10.27-vs2.3.6.8/Makefile	2014-01-15 21:02:36.000000000 -0600
+++ b/linux-3.10.27-vs2.3.6.8/Makefile	2014-01-15 21:28:35.000000000 -0600
@@ -1,7 +1,7 @@
 VERSION = 3
 PATCHLEVEL = 10
 SUBLEVEL = 27
-EXTRAVERSION =
+EXTRAVERSION = -vs2.3.6.8
 NAME = TOSSUG Baby Fish
 
 # *DOCUMENTATION*
diff -urNpd a/linux-3.10.27-vs2.3.6.8/net/ipv4/inet_diag.c b/linux-3.10.27-vs2.3.6.8/net/ipv4/inet_diag.c
--- a/linux-3.10.27-vs2.3.6.8/net/ipv4/inet_diag.c	2014-01-15 21:39:08.000000000 -0600
+++ b/linux-3.10.27-vs2.3.6.8/net/ipv4/inet_diag.c	2014-01-15 21:28:18.000000000 -0600
@@ -112,8 +112,10 @@ int inet_sk_diag_fill(struct sock *sk, s
 	memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src));
 	memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst));
 
-	r->id.idiag_src[0] = inet->inet_rcv_saddr;
-	r->id.idiag_dst[0] = inet->inet_daddr;
+	r->id.idiag_src[0] = nx_map_sock_lback(sk->sk_nx_info,
+		inet->inet_rcv_saddr);
+	r->id.idiag_dst[0] = nx_map_sock_lback(sk->sk_nx_info,
+		inet->inet_daddr);
 
 	if (nla_put_u8(skb, INET_DIAG_SHUTDOWN, sk->sk_shutdown))
 		goto errout;
@@ -256,8 +258,8 @@ static int inet_twsk_diag_fill(struct in
 	memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src));
 	memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst));
 
-	r->id.idiag_src[0]    = tw->tw_rcv_saddr;
-	r->id.idiag_dst[0]    = tw->tw_daddr;
+	r->id.idiag_src[0]    = nx_map_sock_lback(tw->tw_nx_info, tw->tw_rcv_saddr);
+	r->id.idiag_dst[0]    = nx_map_sock_lback(tw->tw_nx_info, tw->tw_daddr);
 
 	r->idiag_state	      = tw->tw_substate;
 	r->idiag_timer	      = 3;
@@ -753,8 +755,8 @@ static int inet_diag_fill_req(struct sk_
 	memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src));
 	memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst));
 
-	r->id.idiag_src[0] = ireq->loc_addr;
-	r->id.idiag_dst[0] = ireq->rmt_addr;
+	r->id.idiag_src[0] = nx_map_sock_lback(sk->sk_nx_info, ireq->loc_addr);
+	r->id.idiag_dst[0] = nx_map_sock_lback(sk->sk_nx_info, ireq->rmt_addr);
 
 	r->idiag_expires = jiffies_to_msecs(tmo);
 	r->idiag_rqueue = 0;