bnx2x: fix DMA unmapping of TSO split BDs
authorMichal Schmidt <mschmidt@redhat.com>
Thu, 9 Jan 2014 13:36:27 +0000 (14:36 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Sat, 15 Feb 2014 19:20:10 +0000 (19:20 +0000)
commit46bdd0fd529bdb96ffb50530aee3346160ca8372
tree1dc9d367e1251849a0c86369da8ef0f0f9f9801a
parentf5d992e9ac16141f536d8cb96618df5b2a315667
bnx2x: fix DMA unmapping of TSO split BDs

[ Upstream commit 95e92fd40c967c363ad66b2fd1ce4dcd68132e54 ]

bnx2x triggers warnings with CONFIG_DMA_API_DEBUG=y:

  WARNING: CPU: 0 PID: 2253 at lib/dma-debug.c:887 check_unmap+0xf8/0x920()
  bnx2x 0000:28:00.0: DMA-API: device driver frees DMA memory with
  different size [device address=0x00000000da2b389e] [map size=1490 bytes]
  [unmap size=66 bytes]

The reason is that bnx2x splits a TSO BD into two BDs (headers + data)
using one DMA mapping for both, but it uses only the length of the first
BD when unmapping.

This patch fixes the bug by unmapping the whole length of the two BDs.

Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c