On Tue, Oct 18, 2005 at 11:01:40AM +1300, Ian McDonald wrote:

>  [<c01034ee>] dump_stack+0x1e/0x30
>  [<c0319c25>] ip_options_echo+0x45/0x360
>  [<c033a866>] icmp_send+0x106/0x3d0
>  [<c0315a8c>] ipv4_link_failure+0x2c/0x60
>  [<c0338a97>] arp_error_report+0x57/0x60
>  [<c0305c5a>] neigh_timer_handler+0xba/0x250
>
> OK above is the stack trace. Can see that it is failing to get an ARP
> response which makes sense since we are sending to a non-existent
> machine...

Thanks.  Turns out the problem has nothing to do with use-after-free
or double-free.  It's just that we're not clearing the CB area and
DCCP unlike TCP uses a CB format that's incompatible with IP.

Signed-off-by: Herbert Xu <[EMAIL PROTECTED]>

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
diff --git a/net/dccp/output.c b/net/dccp/output.c
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -102,6 +102,7 @@ int dccp_transmit_skb(struct sock *sk, s
 
                DCCP_INC_STATS(DCCP_MIB_OUTSEGS);
 
+               memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
                err = ip_queue_xmit(skb, 0);
                if (err <= 0)
                        return err;

Reply via email to