netdev
[Top] [All Lists]

Follow-on: [OOPS] 2.4.25 fealnx: oops with heavy UDP traffic

To: netdev@xxxxxxxxxxx
Subject: Follow-on: [OOPS] 2.4.25 fealnx: oops with heavy UDP traffic
From: Denis Vlasenko <vda@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 24 Mar 2004 10:26:34 +0200
Cc: Jeff Garzik <jgarzik@xxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
I played with gcc -S a bit.

drivers/net/fealnx.c:netdev_rx():
                        if (pkt_len < rx_copybreak &&
                            (skb = dev_alloc_skb(pkt_len + 2)) != NULL) {
                                skb->dev = dev;
                                skb_reserve(skb, 2);    /* 16 byte align the IP 
header */
                                /* Call copy + cksum if available. */
#if ! defined(__alpha__)
                                eth_copy_and_sum(skb,
                                        np->cur_rx->skbuff->tail, pkt_len, 0);
                                skb_put(skb, pkt_len);
#else
                                memcpy(skb_put(skb, pkt_len),
                                        np->cur_rx->skbuff->tail, pkt_len);
#endif
                        } else {
                                skb_put(skb = np->cur_rx->skbuff, pkt_len);
                                              ^^^^^^^^^^^^^^^^^^
oops happens here, np->cur_rx->skbuff is NULL

                                np->cur_rx->skbuff = NULL;
                                if (np->really_rx_count == RX_RING_SIZE)
                                        np->lack_rxbuf = np->cur_rx;
                                --np->really_rx_count;
                        }
--
vda



<Prev in Thread] Current Thread [Next in Thread>
  • Follow-on: [OOPS] 2.4.25 fealnx: oops with heavy UDP traffic, Denis Vlasenko <=