Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6329fe5c authored by Maciej W. Rozycki's avatar Maciej W. Rozycki Committed by David S. Miller
Browse files

defxx: Discard DMA maps on buffer deallocation



Prearranged receive DMA bounce buffer mappings are not released in the
card reboot/shutdown path.  That does not affect frame reception, but
probably explains the random segmentation fault I observed the other day
on interface shutdown.  Card is rebooted as required by the spec in the
process of ring fault recovery when a PC Trace signal has been received.

This change fixes the problem in an obvious manner.

Reported-by: default avatarRobert Coerver <Robert.Coerver@ll.mit.edu>
Tested-by: default avatarRobert Coerver <Robert.Coerver@ll.mit.edu>
Signed-off-by: default avatarMaciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d68ab591
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -3447,8 +3447,13 @@ static void dfx_rcv_flush( DFX_board_t *bp )
		{
			struct sk_buff *skb;
			skb = (struct sk_buff *)bp->p_rcv_buff_va[i+j];
			if (skb)
			if (skb) {
				dma_unmap_single(bp->bus_dev,
						 bp->descr_block_virt->rcv_data[i+j].long_1,
						 PI_RCV_DATA_K_SIZE_MAX,
						 DMA_FROM_DEVICE);
				dev_kfree_skb(skb);
			}
			bp->p_rcv_buff_va[i+j] = NULL;
		}