Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 366684bd authored by Linas Vepstas's avatar Linas Vepstas Committed by Jeff Garzik
Browse files

Spidernet another skb mem leak



Another skb leak in an error branch. Fix this by adding
call to dev_kfree_skb_irq() after moving to a more
appropriate spot.

Signed-off-by: default avatarLinas Vepstas <linas@austin.ibm.com>
Cc: James K Lewis <jklewis@us.ibm.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 05b346b5
Loading
Loading
Loading
Loading
+12 −11
Original line number Diff line number Diff line
@@ -926,19 +926,8 @@ spider_net_pass_skb_up(struct spider_net_descr *descr,

	data_status = descr->data_status;
	data_error = descr->data_error;

	netdev = card->netdev;

	/* the cases we'll throw away the packet immediately */
	if (data_error & SPIDER_NET_DESTROY_RX_FLAGS) {
		if (netif_msg_rx_err(card))
			pr_err("error in received descriptor found, "
			       "data_status=x%08x, data_error=x%08x\n",
			       data_status, data_error);
		card->spider_stats.rx_desc_error++;
		return 0;
	}

	skb = descr->skb;
	skb->dev = netdev;
	skb_put(skb, descr->valid_size);
@@ -1037,6 +1026,18 @@ spider_net_decode_one_descr(struct spider_net_card *card)
		goto refill;
	}

	/* The cases we'll throw away the packet immediately */
	if (descr->data_error & SPIDER_NET_DESTROY_RX_FLAGS) {
		if (netif_msg_rx_err(card))
			pr_err("%s: error in received descriptor found, "
			       "data_status=x%08x, data_error=x%08x\n",
			       card->netdev->name,
			       descr->data_status, descr->data_error);
		card->spider_stats.rx_desc_error++;
		dev_kfree_skb_irq(descr->skb);
		goto refill;
	}

	/* ok, we've got a packet in descr */
	result = spider_net_pass_skb_up(descr, card);
refill: