diff options
author | Luis R. Rodriguez <lrodriguez@atheros.com> | 2008-12-03 12:35:29 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-12-05 15:35:59 +0100 |
commit | f8316df10c4e3bec5b4c3a5a8e026c577640c3a6 (patch) | |
tree | f56af9c85de35bda97a0b45275eed6b6f7362712 /drivers/net/wireless/ath9k/beacon.c | |
parent | rt2x00: Correctly initialize AID during set_key() (diff) | |
download | linux-f8316df10c4e3bec5b4c3a5a8e026c577640c3a6.tar.xz linux-f8316df10c4e3bec5b4c3a5a8e026c577640c3a6.zip |
ath9k: Check for pci_map_single() errors
pci_map_single() can fail so detect those errors with
pci_dma_mapping_error() and deal with them accordingly.
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath9k/beacon.c')
-rw-r--r-- | drivers/net/wireless/ath9k/beacon.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath9k/beacon.c b/drivers/net/wireless/ath9k/beacon.c index fe6929dc2937..507299bf0136 100644 --- a/drivers/net/wireless/ath9k/beacon.c +++ b/drivers/net/wireless/ath9k/beacon.c @@ -190,6 +190,13 @@ static struct ath_buf *ath_beacon_generate(struct ath_softc *sc, int if_id) pci_map_single(sc->pdev, skb->data, skb->len, PCI_DMA_TODEVICE); + if (unlikely(pci_dma_mapping_error(sc->pdev, bf->bf_buf_addr))) { + dev_kfree_skb_any(skb); + bf->bf_mpdu = NULL; + DPRINTF(sc, ATH_DBG_CONFIG, + "pci_dma_mapping_error() on beaconing\n"); + return NULL; + } skb = ieee80211_get_buffered_bc(sc->hw, vif); @@ -392,11 +399,18 @@ int ath_beacon_alloc(struct ath_softc *sc, int if_id) memcpy(&hdr[1], &val, sizeof(val)); } + bf->bf_mpdu = skb; bf->bf_buf_addr = bf->bf_dmacontext = pci_map_single(sc->pdev, skb->data, skb->len, PCI_DMA_TODEVICE); - bf->bf_mpdu = skb; + if (unlikely(pci_dma_mapping_error(sc->pdev, bf->bf_buf_addr))) { + dev_kfree_skb_any(skb); + bf->bf_mpdu = NULL; + DPRINTF(sc, ATH_DBG_CONFIG, + "pci_dma_mapping_error() on beacon alloc\n"); + return -ENOMEM; + } return 0; } |