This PCS6 patch was ported to Vz7 by the initial commit (2a8b5de95918).
It is only relevant if there is via_phys_dev stuff, which may set
BR_ALREADY_SEEN skb->brmark. However, the via_phys_dev feature was
removed in the scope of PSBM-12955, so this patch is not needed any
more.

Moreover, it is buggy. The point is it may call skb_clone, which does
not initialize all skb fields. As a result, some fields may contain
junk. One of such fields is skb->csum_bad, which appeared after the last
rebase. skb_checksum_validate, which is now called by icmpv6_rcv,
identifies an skb as corrupted and drops it if this flag is set. In
particular, this results in ping6 failures with "Address unreachable"
error.

https://jira.sw.ru/browse/PSBM-38924

Signed-off-by: Vladimir Davydov <vdavy...@parallels.com>
---
 net/bridge/br_input.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
index c9c4b3bc7ae6..cf29b38b3b0c 100644
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -68,7 +68,6 @@ int br_handle_frame_finish(struct sk_buff *skb)
        struct sk_buff *skb2;
        bool unicast = true;
        u16 vid = 0;
-       int err = 0;
 
        if (!p || p->state == BR_STATE_DISABLED)
                goto drop;
@@ -124,21 +123,17 @@ int br_handle_frame_finish(struct sk_buff *skb)
                skb = NULL;
        }
 
-       if (skb2 == skb)
-               skb2 = skb_clone(skb, GFP_ATOMIC);
-
-       if (skb2)
-               err = br_pass_frame_up(skb2);
-
        if (skb) {
                if (dst) {
                        dst->used = jiffies;
-                       br_forward(dst->dst, skb, NULL);
+                       br_forward(dst->dst, skb, skb2);
                } else
-                       br_flood_forward(br, skb, NULL, unicast);
+                       br_flood_forward(br, skb, skb2, unicast);
        }
 
-       return err;
+       if (skb2)
+               return br_pass_frame_up(skb2);
+
 out:
        return 0;
 drop:
-- 
2.1.4

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to