[PATCH] mv643xx: fix skb memory leak
authorDale Farnsworth <dale@farnsworth.org>
Thu, 1 Sep 2005 16:59:23 +0000 (09:59 -0700)
committerJeff Garzik <jgarzik@pobox.com>
Mon, 5 Sep 2005 22:08:30 +0000 (18:08 -0400)
This patch fixes an skb memory leak under heavy receive load
(whenever the more packets have been received than the NAPI budget
allows to be processed).

Signed-off-by: Dale Farnsworth <dale@farnsworth.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
drivers/net/mv643xx_eth.c

index fb6b232069d6c43066fbb6f9d7b7244b8770d496..ab74d4583c418425eae156479b7ff35f7237e7c0 100644 (file)
@@ -412,15 +412,13 @@ static int mv643xx_eth_receive_queue(struct net_device *dev)
        struct pkt_info pkt_info;
 
 #ifdef MV643XX_NAPI
-       while (eth_port_receive(mp, &pkt_info) == ETH_OK && budget > 0) {
+       while (budget-- > 0 && eth_port_receive(mp, &pkt_info) == ETH_OK) {
 #else
        while (eth_port_receive(mp, &pkt_info) == ETH_OK) {
 #endif
                mp->rx_ring_skbs--;
                received_packets++;
-#ifdef MV643XX_NAPI
-               budget--;
-#endif
+
                /* Update statistics. Note byte count includes 4 byte CRC count */
                stats->rx_packets++;
                stats->rx_bytes += pkt_info.byte_cnt;