Commit 3915a252 authored by Dan Williams's avatar Dan Williams Committed by Kalle Valo
Browse files

libertas: Fix a double free in if_spi_c2h_data()



The lbs_process_rxed_packet() frees the skb.  It didn't originally, but
we fixed it in commit f54930f3 ("libertas: don't leak skb on receive
error").

Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarDan Williams <dcbw@redhat.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent b95c7322
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -766,19 +766,15 @@ static int if_spi_c2h_data(struct if_spi_card *card)

	/* Read the data from the WLAN module into our skb... */
	err = spu_read(card, IF_SPI_DATA_RDWRPORT_REG, data, ALIGN(len, 4));
	if (err)
		goto free_skb;
	if (err) {
		dev_kfree_skb(skb);
		goto out;
	}

	/* pass the SKB to libertas */
	err = lbs_process_rxed_packet(card->priv, skb);
	if (err)
		goto free_skb;

	/* success */
	goto out;
	/* lbs_process_rxed_packet() consumes the skb */

free_skb:
	dev_kfree_skb(skb);
out:
	if (err)
		netdev_err(priv->dev, "%s: err=%d\n", __func__, err);