lkml.org 
[lkml]   [2009]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: Revert "gro: Fix legacy path napi_complete crash",
    From
    From: David Miller <davem@davemloft.net>
    Date: Tue, 24 Mar 2009 14:36:22 -0700 (PDT)

    > From: Herbert Xu <herbert@gondor.apana.org.au>
    > Date: Tue, 24 Mar 2009 23:09:28 +0800
    >
    > > @@ -2588,9 +2588,10 @@ static int process_backlog(struct napi_struct *napi, int quota)
    > > local_irq_disable();
    > > skb = __skb_dequeue(&queue->input_pkt_queue);
    > > if (!skb) {
    > > + list_del(&napi->poll_list);
    > > + clear_bit(NAPI_STATE_SCHED, &napi->state);
    > > local_irq_enable();
    > > - napi_complete(napi);
    > > - goto out;
    > > + break;
    > > }
    > > local_irq_enable();
    >
    > I think the problem is that we need to do the GRO flush before the
    > list delete and clearing the NAPI_STATE_SCHED bit.

    Ok Herbert, I'm even more sure of this because in your original commit
    log message you mention:

    This simply doesn't work since we need to flush the held
    GRO packets first.

    We are certainly in a pickle here, actually.

    We can't run the GRO flush until we re-enable interrupts. But if we
    re-enable interrupts, more packets get queued to the input_pkt_queue
    and we end up back where we started.


    \
     
     \ /
      Last update: 2009-03-24 23:51    [W:6.072 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site