diff options
-rw-r--r-- | drivers/net/wireless/b43/dma.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c index fa40fdfea71..fdfeab0c21a 100644 --- a/drivers/net/wireless/b43/dma.c +++ b/drivers/net/wireless/b43/dma.c | |||
@@ -1221,14 +1221,14 @@ static int dma_tx_fragment(struct b43_dmaring *ring, | |||
1221 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); | 1221 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); |
1222 | /* create a bounce buffer in zone_dma on mapping failure. */ | 1222 | /* create a bounce buffer in zone_dma on mapping failure. */ |
1223 | if (b43_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) { | 1223 | if (b43_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) { |
1224 | priv_info->bouncebuffer = kmalloc(skb->len, GFP_ATOMIC | GFP_DMA); | 1224 | priv_info->bouncebuffer = kmemdup(skb->data, skb->len, |
1225 | GFP_ATOMIC | GFP_DMA); | ||
1225 | if (!priv_info->bouncebuffer) { | 1226 | if (!priv_info->bouncebuffer) { |
1226 | ring->current_slot = old_top_slot; | 1227 | ring->current_slot = old_top_slot; |
1227 | ring->used_slots = old_used_slots; | 1228 | ring->used_slots = old_used_slots; |
1228 | err = -ENOMEM; | 1229 | err = -ENOMEM; |
1229 | goto out_unmap_hdr; | 1230 | goto out_unmap_hdr; |
1230 | } | 1231 | } |
1231 | memcpy(priv_info->bouncebuffer, skb->data, skb->len); | ||
1232 | 1232 | ||
1233 | meta->dmaaddr = map_descbuffer(ring, priv_info->bouncebuffer, skb->len, 1); | 1233 | meta->dmaaddr = map_descbuffer(ring, priv_info->bouncebuffer, skb->len, 1); |
1234 | if (b43_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) { | 1234 | if (b43_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) { |