mirror of https://gitee.com/openkylin/linux.git
iwlagn: fix cmd queue unmap
When we stop the device while a command is in flight that uses multiple TBs, we can leak the DMA buffers for the second and higher TBs. Fix this by using iwlagn_unmap_tfd() as we do when we normally recover the entry. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
This commit is contained in:
parent
1e5cf9b0be
commit
f8d651a56e
|
@ -309,10 +309,7 @@ void iwl_cmd_queue_unmap(struct iwl_priv *priv)
|
||||||
i = get_cmd_index(q, q->read_ptr);
|
i = get_cmd_index(q, q->read_ptr);
|
||||||
|
|
||||||
if (txq->meta[i].flags & CMD_MAPPED) {
|
if (txq->meta[i].flags & CMD_MAPPED) {
|
||||||
dma_unmap_single(priv->bus.dev,
|
iwlagn_unmap_tfd(priv, &txq->meta[i], &txq->tfds[i]);
|
||||||
dma_unmap_addr(&txq->meta[i], mapping),
|
|
||||||
dma_unmap_len(&txq->meta[i], len),
|
|
||||||
DMA_BIDIRECTIONAL);
|
|
||||||
txq->meta[i].flags = 0;
|
txq->meta[i].flags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue