sfc: Fix DMA mapping cleanup in case of an error in TSO
We need buffer->len to remain valid to work out the correct address to be unmapped. We therefore need to clear buffer->len after the unmap operation. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a355020af4
commit
a7ebd27a13
|
@ -821,8 +821,6 @@ static void efx_enqueue_unwind(struct efx_tx_queue *tx_queue)
|
|||
EFX_TXQ_MASK];
|
||||
efx_tsoh_free(tx_queue, buffer);
|
||||
EFX_BUG_ON_PARANOID(buffer->skb);
|
||||
buffer->len = 0;
|
||||
buffer->continuation = true;
|
||||
if (buffer->unmap_len) {
|
||||
unmap_addr = (buffer->dma_addr + buffer->len -
|
||||
buffer->unmap_len);
|
||||
|
@ -836,6 +834,8 @@ static void efx_enqueue_unwind(struct efx_tx_queue *tx_queue)
|
|||
PCI_DMA_TODEVICE);
|
||||
buffer->unmap_len = 0;
|
||||
}
|
||||
buffer->len = 0;
|
||||
buffer->continuation = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue