David S. Miller wrote:
> From: "David S. Miller" <[EMAIL PROTECTED]>
> Date: Thu, 28 Jul 2005 20:54:24 -0700 (PDT)
> 
>>Patrick, I think some parts of this change:
>>
>>    [IPV4/6]: Check if packet was actually delivered to a raw socket to 
>> decide whether to send an ICMP unreachable
>>
>>might be buggy and create SKB refcount problems.
>>
>>Andrew Morton was seeing all kinds of weird problems and we narrowed
>>it down to this specific changeset.  TCP sockets would hang, and other
>>ugly stuff like that.  We verified that backing out that changeset
>>above makes the problems go away.
> 
> Hold this thought, some recent emails from Andrew indicate
> that it might be some other change in the net-2.6.14 tree,
> instead of this one.

I double-checked, but couldn't find any problems in this patch. Do these
problems occur with IPv4 or IPv6?

> My comments about IPV6 raw handling still hold, however :)

Yes, changing it to how ip_input handles should fix it. Here's a patch
in case you didn't take care of it already.

Signed-off-by: Patrick McHardy <[EMAIL PROTECTED]>
diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c
--- a/net/ipv6/ip6_input.c
+++ b/net/ipv6/ip6_input.c
@@ -198,12 +198,13 @@ resubmit:
                if (!raw_sk) {
                        if (xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb)) {
                                IP6_INC_STATS_BH(IPSTATS_MIB_INUNKNOWNPROTOS);
-                               icmpv6_param_prob(skb, ICMPV6_UNK_NEXTHDR, 
nhoff);
+                               icmpv6_send(skb, ICMPV6_PARAMPROB,
+                                           ICMPV6_UNK_NEXTHDR, nhoff,
+                                           skb->dev);
                        }
-               } else {
+               } else
                        IP6_INC_STATS_BH(IPSTATS_MIB_INDELIVERS);
-                       kfree_skb(skb);
-               }
+               kfree_skb(skb);
        }
        rcu_read_unlock();
        return 0;

Reply via email to