Here it is. (This is just pasted into Outlook, so don’t try to apply it)
If you manually add the two skb_linearize() calls and the update of ‘hdr’ you 
should be safe.

Good luck!
///jon


commit c7cad0d6f70cd4ce8644ffe528a4df1cdc2e77f5
Author: Jon Paul Maloy <jon.ma...@ericsson.com>
Date:   Thu Nov 19 14:30:40 2015 -0500

    tipc: move linearization of buffers to generic code

    In commit 5cbb28a4bf65c7e4 ("tipc: linearize arriving NAME_DISTR
    and LINK_PROTO buffers") we added linearization of NAME_DISTRIBUTOR,
    LINK_PROTOCOL/RESET and LINK_PROTOCOL/ACTIVATE to the function
    tipc_udp_recv(). The location of the change was selected in order
    to make the commit easily appliable to 'net' and 'stable'.

    We now move this linearization to where it should be done, in the
    functions tipc_named_rcv() and tipc_link_proto_rcv() respectively.

    Reviewed-by: Ying Xue <ying....@windriver.com>
    Signed-off-by: Jon Maloy <jon.ma...@ericsson.com>
    Signed-off-by: David S. Miller <da...@davemloft.net>

diff --git a/net/tipc/link.c b/net/tipc/link.c
index 9efbdbd..fa452fb 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -1260,6 +1260,8 @@ static int tipc_link_proto_rcv(struct tipc_link *l, 
struct sk_buff *skb,
                /* fall thru' */
        case ACTIVATE_MSG:
+               skb_linearize(skb);
+               hdr = buf_msg(skb);
                /* Complete own link name with peer's interface name */
                if_name =  strrchr(l->name, ':') + 1;
diff --git a/net/tipc/name_distr.c b/net/tipc/name_distr.c
index c07612b..f51c8bd 100644
--- a/net/tipc/name_distr.c
+++ b/net/tipc/name_distr.c
@@ -397,6 +397,7 @@ void tipc_named_rcv(struct net *net, struct sk_buff_head 
*inputq)
        spin_lock_bh(&tn->nametbl_lock);
        for (skb = skb_dequeue(inputq); skb; skb = skb_dequeue(inputq)) {
+               skb_linearize(skb);
                msg = buf_msg(skb);
                mtype = msg_type(msg);
                item = (struct distr_item *)msg_data(msg);
diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c
index ad2719a..816914e 100644
--- a/net/tipc/udp_media.c
+++ b/net/tipc/udp_media.c
@@ -48,7 +48,6 @@
#include <linux/tipc_netlink.h>
#include "core.h"
#include "bearer.h"
-#include "msg.h"
 /* IANA assigned UDP port */
#define UDP_PORT_DEFAULT       6118
@@ -221,10 +220,6 @@ static int tipc_udp_recv(struct sock *sk, struct sk_buff 
*skb)
{
        struct udp_bearer *ub;
        struct tipc_bearer *b;
-       int usr = msg_user(buf_msg(skb));
-
-       if ((usr == LINK_PROTOCOL) || (usr == NAME_DISTRIBUTOR))
-               skb_linearize(skb);
        ub = rcu_dereference_sk_user_data(sk);
        if (!ub) {

From: GUNA [mailto:gbala...@gmail.com]
Sent: Thursday, 28 April, 2016 19:24
To: Jon Maloy
Cc: tipc-discussion@lists.sourceforge.net
Subject: Re: Tipc: name table mismatch between different cards in a system

See inline

On Thursday, April 28, 2016, Jon Maloy 
<jon.ma...@ericsson.com<mailto:jon.ma...@ericsson.com>> wrote:


> -----Original Message-----
> From: GUNA [mailto:gbala...@gmail.com<javascript:;>]
> Sent: Thursday, 28 April, 2016 17:43
> To: tipc-discussion@lists.sourceforge.net<javascript:;>
> Subject: [tipc-discussion] Tipc: name table mismatch between different cards 
> in a
> system
>
> After upgraded CPU cards to 4.4.0 Kernel, there is table mismatch between
> CPU and IO cards. The IO Publication value = CPU Publication + 1 as you see
> example below:
>
> In CPU (slot 2)
>
> Type       Lower      Upper      Port Identity           Publication
>
> 16789314 3201 3201 <1.1.6:1540208445>           1540208445
>
> 16789823 4 4 <1.1.6:3035967304>                       3035967304
>
> 16832168 3201 3201 <1.1.6:723652841>             723652841
>
> …
>
>
>
> In IO (slot10)
>
> 16789314 3201 3201 <1.1.6:1540208445>          1540208446
>
> 16789823 4 4 <1.1.6:3035967304>                      3035967305
>
> 16832168 3201 3201 <1.1.6:723652841>            723652842
>
> …

This looks like another artefact of the problem we have in 4.4 with corrupted 
entries, where old entries are not withdrawn, so the new ones cannot replace 
them in "CPU", while it happens to work in "IO".   If  1.1.6 is "IO" or a third 
node this could make sense.

1.1.6 is node6 but I see similar for all other nodes as well. Ie: same for 
1.1.2,1.1.3,....1.1.13.


This problem has been fixed in Ubuntu 16.04, but has not been released yet. I 
would suggest you try 4.5 or 4.6rc4 to see if it disappears. According to Rune 
Torgersen it is definitely working in 4.6.

///jon

I could not move to new kernel now, but I could rebuild the 4.4.0 if I get the 
fix.
If you are aware of the fix please let me know detail of the fix.

>
>
> All the entries are similar pattern in both IO & CPU. The CPU match with
> rest of the CPUs.
>
>
> The system runs on previous kernel did not see this issue.
>
>
> There are two links on IO and CPU cards.  Both links are ACTIVE in IO and
> in CPU one ACTIVE and other STANDBY.
>
> Is that cause the issue?  If so, is it possible to make both links to be
> ACTIVE ?
>
>
> // IO
>
> Link <1.1.10:eth0-1.1.2:p19p1>
>
>   ACTIVE  MTU:1500  Priority:10  Tolerance:1200 ms  Window:50 packets
>
> Link <1.1.10:eth1-1.1.2:p19p2>
>
>   ACTIVE  MTU:1500  Priority:10  Tolerance:1200 ms  Window:50 packets
>
> // CPU
> Link <1.1.2:p19p1-1.1.10:eth0>
>   ACTIVE  MTU:1500  Priority:10  Tolerance:1200 ms  Window:50 packets
>
> Link <1.1.2:p19p2-1.1.10:eth1>
>   STANDBY  MTU:1500  Priority:10  Tolerance:1200 ms  Window:50 packets
>
> thanks,
>
> Guna
> ------------------------------------------------------------------------------
> Find and fix application performance issues faster with Applications Manager
> Applications Manager provides deep performance insights into multiple tiers of
> your business applications. It resolves application problems quickly and
> reduces your MTTR. Get your free trial!
> https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
> _______________________________________________
> tipc-discussion mailing list
> tipc-discussion@lists.sourceforge.net<javascript:;>
> https://lists.sourceforge.net/lists/listinfo/tipc-discussion
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
tipc-discussion mailing list
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to