skge: fix invalid value passed to pci_unmap_sigle
authorMikulas Patocka <mpatocka@redhat.com>
Fri, 20 Sep 2013 17:53:22 +0000 (13:53 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Sep 2013 14:16:02 +0000 (10:16 -0400)
commit3361dc9538832a2a9150a8c722374ca844bf8dc8
tree33e1291229090ffc37fd1f2d22a32572751e4067
parent8d65b1190ddc548b0411477f308d04f4595bac57
skge: fix invalid value passed to pci_unmap_sigle

In my patch c194992cbe71c20bb3623a566af8d11b0bfaa721 ("skge: fix
broken driver") I didn't fix the skge bug correctly. The value of the
new mapping (not old) was passed to pci_unmap_single.

If we enable CONFIG_DMA_API_DEBUG, it results in this warning:
WARNING: CPU: 0 PID: 0 at lib/dma-debug.c:986 check_sync+0x4c4/0x580()
skge 0000:02:07.0: DMA-API: device driver tries to sync DMA memory it has
not allocated [device address=0x000000023a0096c0] [size=1536 bytes]

This patch makes the skge driver pass the correct value to
pci_unmap_single and fixes the warning. It copies the old descriptor to
on-stack variable "ee" and unmaps it if mapping of the new descriptor
succeeded.

This patch should be backported to 3.11-stable.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Reported-by: Francois Romieu <romieu@fr.zoreil.com>
Tested-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/skge.c