netdev
[Top] [All Lists]

Re: fealnx oopses

To: Francois Romieu <romieu@xxxxxxxxxxxxx>
Subject: Re: fealnx oopses
From: Denis Vlasenko <vda@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 28 Mar 2004 22:19:56 +0200
Cc: Jeff Garzik <jgarzik@xxxxxxxxx>, Andreas Henriksson <andreas@xxxxxxxxxxxx>, netdev@xxxxxxxxxxx
In-reply-to: <20040328005533.A6117@xxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <200403261214.58127.vda@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <200403272328.51291.vda@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20040328005533.A6117@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: KMail/1.5.4
On Sunday 28 March 2004 01:55, Francois Romieu wrote:
> Denis Vlasenko <vda@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> :
> [...]
>
> > Sorry Jeff your patch does not fix my problem.
> > I also verified that it happens this way:
> > (1) rx skb is processed and freed
> > (2) allocation failure for new skb
> > (3) next rx intr occurs, cur_rx->skbuff still == NULL
> > (4) oops
>
> Your previous analysis made sense: the logic responsible for low memory
> handling is broken in several ways.
>
> Patch against2.6.5-rc2-mm3 below, without warranty

I tested on 2.4.25, patch applied with minimal manual correction
in last hunk (rediffed patch attached).

Patched driver oopses in allocate_rx_buffers() shortly after boot,
before I can login. It dies here (sorry, only objdump for now,
I am -EBADLYNEEDTOSLEEP. Can track it to src line tomorrow):

0000065c <allocate_rx_buffers>:
     65c:       55                      push   %ebp
     65d:       89 e5                   mov    %esp,%ebp
     65f:       56                      push   %esi
     660:       53                      push   %ebx
     661:       8b 75 08                mov    0x8(%ebp),%esi
     664:       8b 5e 6c                mov    0x6c(%esi),%ebx
     667:       83 bb 9c 00 00 00 0c    cmpl   $0xc,0x9c(%ebx)
     66e:       0f 84 8a 00 00 00       je     6fe <allocate_rx_buffers+0xa2>
     674:       6a 20                   push   $0x20
     676:       8b 83 b0 00 00 00       mov    0xb0(%ebx),%eax
     67c:       83 c0 10                add    $0x10,%eax
     67f:       50                      push   %eax
     680:       e8 fc ff ff ff          call   681 <allocate_rx_buffers+0x25>
     685:       85 c0                   test   %eax,%eax
     687:       5a                      pop    %edx
     688:       59                      pop    %ecx
     689:       74 73                   je     6fe <allocate_rx_buffers+0xa2>
     68b:       83 80 84 00 00 00 10    addl   $0x10,0x84(%eax)
     692:       83 80 88 00 00 00 10    addl   $0x10,0x88(%eax)
     699:       85 c0                   test   %eax,%eax
     69b:       74 61                   je     6fe <allocate_rx_buffers+0xa2>
     69d:       8b 93 98 00 00 00       mov    0x98(%ebx),%edx
     6a3:       8b 4a 14                mov    0x14(%edx),%ecx
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
%edx == 0 here

     6a6:       85 c9                   test   %ecx,%ecx
     6a8:       74 12                   je     6bc <allocate_rx_buffers+0x60>
     6aa:       89 f6                   mov    %esi,%esi
     6ac:       8b 52 10                mov    0x10(%edx),%edx
     6af:       89 93 98 00 00 00       mov    %edx,0x98(%ebx)
     6b5:       8b 4a 14                mov    0x14(%edx),%ecx
     6b8:       85 c9                   test   %ecx,%ecx
     6ba:       75 f0                   jne    6ac <allocate_rx_buffers+0x50>
     6bc:       89 42 14                mov    %eax,0x14(%edx)
     6bf:       89 70 18                mov    %esi,0x18(%eax)
     6c2:       8b 93 98 00 00 00       mov    0x98(%ebx),%edx
     6c8:       8b 80 88 00 00 00       mov    0x88(%eax),%eax
     6ce:       f0 83 44 24 00 00       lock addl $0x0,0x0(%esp,1)
     6d4:       05 00 00 00 40          add    $0x40000000,%eax
     6d9:       89 42 08                mov    %eax,0x8(%edx)
     6dc:       8b 83 98 00 00 00       mov    0x98(%ebx),%eax
     6e2:       c7 00 00 00 00 80       movl   $0x80000000,(%eax)
     6e8:       8b 83 9c 00 00 00       mov    0x9c(%ebx),%eax
     6ee:       40                      inc    %eax
     6ef:       83 f8 0c                cmp    $0xc,%eax
     6f2:       89 83 9c 00 00 00       mov    %eax,0x9c(%ebx)
     6f8:       0f 85 76 ff ff ff       jne    674 <allocate_rx_buffers+0x18>
     6fe:       8d 65 f8                lea    0xfffffff8(%ebp),%esp
...
--
vda

Attachment: fealnx_oom.24.patch
Description: Text Data

<Prev in Thread] Current Thread [Next in Thread>