[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1306155058.20687.8.camel@edumazet-laptop>
Date:	Mon, 23 May 2011 14:50:58 +0200
From:	Eric Dumazet <eric.dumazet@...il.com>
To:	Denys Fedoryshchenko <denys@...p.net.lb>
Cc:	netdev@...r.kernel.org, hadi@...erus.ca
Subject: Re: 2.6.38.x, 2.6.39 sfq? kernel panic in sfq_enqueue
Le lundi 23 mai 2011 à 14:32 +0200, Eric Dumazet a écrit :
> Ouch, thats an ip_fragment() bug I am afraid... nothing to do with SFQ
> 
> It calls 
> 
> err = output(skb);
> 
> and a bit later does :
> 
> skb = frag;
> frag = skb->next;   // thats completely illegal here !
> skb->next = NULL;
> 
> I am cooking a patch and send it in a couple of minutes.
Oh well, false alarm, I am still trying to understand the case.
Some other reports would be appreciated, because here is the strange
thing :
[ 4461.969603] Code: b6 70 10 
3b b3 08 01 00 00 
0f 8d df 01 00 00 jge ....
41 8b 74 24 28    mov 0x28(%r12),%esi       qdisc_pkt_len(skb)
01 b3 b4 00 00 00                       sch->qstats.backlog += qdisc_pkt_len(skb);
RAX = slot
R12 = SKB
48 8b 70 08       mov    0x8(%rax),%rsi     slot->skblist_prev
49 89 04 24       mov    %rax,(%r12)        skb->next = (struct sk_buff *)slot;
49 89 74 24 08    mov    %rsi,0x8(%r12)     skb->prev = slot->skblist_prev;
48 8b 70 08       mov    0x8(%rax),%rsi     slot->skblist_prev   (refetch)
<4c> 89 26        mov    %r12,(%rsi)         slot->skblist_prev->next = skb;  // CRASH
0f b6 f2          movzbl %dl,%esi
4c 89 60 08       mov    %r12,0x8(%rax)      slot->skblist_prev = skb;
48 8d 3c 76       lea
48 8d bc fb 90 01 00
And in your report RAX = R12 !!! (ffff8801172a7d08) I cant see how it
can happen (Its not even a valid skb address, since an SKB should be
64bytes aligned)
If available a disassembly of sfq_enqueue() would be appreciated too ;)
Thanks !
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists