|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [Xen-users] kernel 3.9.2 - xen 4.2.2/4.3rc1 => BUG unable to handle kernel paging request netif_poll+0x49c/0xe8
On 07/05/2013 12:56 PM, Jan Beulich wrote:
>>>> On 05.07.13 at 12:40, Dion Kant <g.w.kant@xxxxxxxxxx> wrote:
>> On 07/04/2013 05:01 PM, Wei Liu wrote:
>>> --- a/drivers/xen/netfront/netfront.c
>>> +++ b/drivers/xen/netfront/netfront.c
>>> @@ -1306,6 +1306,7 @@ static RING_IDX xennet_fill_frags(struct
>>> netfront_info *np,
>>> struct sk_buff *nskb;
>>>
>>> while ((nskb = __skb_dequeue(list))) {
>>> + BUG_ON(nr_frags >= MAX_SKB_FRAGS);
>>> struct netif_rx_response *rx =
>>> RING_GET_RESPONSE(&np->rx, ++cons);
>>>
>>
>> Integrated the patch. I obtained a crash dump and the log in it did not
>> show this BUG_ON. Here is the relevant section from the log
>>
>> var/lib/xen/dump/domUA # crash /root/vmlinux-p1
>> 2013-0705-1347.43-domUA.1.core
>>
>> [ 7.670132] Adding 4192252k swap on /dev/xvda1. Priority:-1 extents:1
>> across:4192252k SS
>> [ 10.204340] NET: Registered protocol family 17
>> [ 481.534979] netfront: Too many frags
>> [ 487.543946] netfront: Too many frags
>> [ 491.049458] netfront: Too many frags
>> [ 491.491153] ------------[ cut here ]------------
>> [ 491.491628] kernel BUG at drivers/xen/netfront/netfront.c:1295!
>
> So if not the BUG_ON() from the patch above, what else does that
> line have in your sources?
Nothing else, but thanks for pointing this out to me.
After obtaining results with your patch
1285 static RING_IDX xennet_fill_frags(struct netfront_info *np,
1286 struct sk_buff *skb,
1287 struct sk_buff_head *list)
1288 {
1289 struct skb_shared_info *shinfo = skb_shinfo(skb);
1290 int nr_frags = shinfo->nr_frags;
1291 RING_IDX cons = np->rx.rsp_cons;
1292 struct sk_buff *nskb;
1293
1294 while ((nskb = __skb_dequeue(list))) {
1295 struct netif_rx_response *rx =
1296 RING_GET_RESPONSE(&np->rx, ++cons);
1297
1298
1299 if (nr_frags == MAX_SKB_FRAGS) {
1300 unsigned int pull_to = NETFRONT_SKB_CB(skb)->pull_to;
1301
1302 BUG_ON(pull_to <= skb_headlen(skb));
1303 __pskb_pull_tail(skb, pull_to - skb_headlen(skb));
1304 nr_frags = shinfo->nr_frags;
1305 }
1306 BUG_ON(nr_frags >= MAX_SKB_FRAGS);
1307
1308 __skb_fill_page_desc(skb, nr_frags,
1309 skb_frag_page(skb_shinfo(nskb)->frags),
1310 rx->offset, rx->status);
Can I conclude that nr_frags == MAX_SKB_FRAGS, pull_to <=
skb_headlen(skb) and the panic happens before the next BUG_ON is reached ?
> [ 717.568040] netfront: Too many frags
> [ 723.768738] ------------[ cut here ]------------
> [ 723.769226] kernel BUG at drivers/xen/netfront/netfront.c:1302!
> [ 723.769724] invalid opcode: 0000 [#1] SMP
> [ 723.770203] Modules linked in: af_packet autofs4 xennet xenblk cdrom
> [ 723.770697] CPU 0
> [ 723.770710] Pid: 1309, comm: sshd Not tainted 3.7.10-1.16-dbg-jbp1-xen #9
> [ 723.771667] RIP: e030:[<ffffffffa0023b17>] [<ffffffffa0023b17>]
> netif_poll+0xe77/0xf70 [xennet]
> [ 723.772057] RSP: e02b:ffff8800fb403c60 EFLAGS: 00010213
> [ 723.772057] RAX: 00000000ffff0986 RBX: 0000000000049b7d RCX:
> ffff8800f78a5428
> [ 723.772057] RDX: 000000000000007d RSI: 0000000000000042 RDI:
> ffff8800f98026c0
> [ 723.772057] RBP: ffff8800fb403e20 R08: 0000000000000001 R09:
> 0000000000000000
> [ 723.772057] R10: 0000000000000000 R11: 0000000000000000 R12:
> ffff8800f79709c0
> [ 723.772057] R13: 0000000000000011 R14: ffff8800f866bc00 R15:
> ffff8800f85a5800
> [ 723.772057] FS: 00007fc8f97e87c0(0000) GS:ffff8800fb400000(0000)
> knlGS:0000000000000000
> [ 723.772057] CS: e033 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 723.772057] CR2: 00007fc8f3aafff0 CR3: 00000000f8a82000 CR4:
> 0000000000002660
> [ 723.772057] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
> 0000000000000000
> [ 723.772057] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7:
> 0000000000000400
> [ 723.772057] Process sshd (pid: 1309, threadinfo ffff8800f88f4000, task
> ffff8800f8279f80)
> [ 723.772057] Stack:
> [ 723.772057] ffff8800fb403d60 ffff8800f7970a40 ffff8800f7970000
> 0000004000000002
> [ 723.772057] 0000000000049b7e ffff8800fb410570 ffff8800f7970a78
> 0000000000000012
> [ 723.772057] ffff8800f7971fb0 0000001200000000 ffff8800f8b8d2c0
> ffff8800fb403d50
> [ 723.772057] Call Trace:
> [ 723.772057] [<ffffffff8041ee35>] net_rx_action+0xd5/0x250
> [ 723.772057] [<ffffffff800376d8>] __do_softirq+0xe8/0x230
> [ 723.772057] [<ffffffff8051151c>] call_softirq+0x1c/0x30
> [ 723.772057] [<ffffffff80008a75>] do_softirq+0x75/0xd0
> [ 723.772057] [<ffffffff800379f5>] irq_exit+0xb5/0xc0
> [ 723.772057] [<ffffffff8036c225>] evtchn_do_upcall+0x295/0x2d0
> [ 723.772057] [<ffffffff8051114e>] do_hypervisor_callback+0x1e/0x30
> [ 723.772057] [<00007fc8f8c5529b>] 0x7fc8f8c5529a
> [ 723.772057] Code: 85 7c fe ff ff ea ff ff ff e9 69 f4 ff ff ba 12 00 00 00
> 48 01 d0 48 39 c1 0f
> 82 b2 fc ff ff e9 e0 fe ff ff ba 08 00 00 00 eb e8 <0f>
> 0b 0f b7 33 48 c7 c7
> 70 6c 02 a0 31 c0 e8 40 7a 4d e0 c7 85
> [ 723.772057] RIP [<ffffffffa0023b17>] netif_poll+0xe77/0xf70 [xennet]
> [ 723.772057] RSP <ffff8800fb403c60>
> [ 723.790939] ---[ end trace 846551a77e015655 ]---
> [ 723.791847] Kernel panic - not syncing: Fatal exception in interrupt
Dion.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |