When a DMA mapping error occurs in igbvf_tx_map_adv(), the error cleanup code decrements count before the unmap loop, causing exactly one successfully mapped DMA buffer to be leaked. This is the same off-by-one bug that was fixed in e1000/e1000e by commit e94eaef11142 ("e1000/e1000e: Fix leak in DMA error cleanup"), which noted: "This issue may still exist in the igbvf driver." Remove the erroneous decrement so the while loop correctly unmaps all successfully mapped buffers. Fixes: c1fa347f20f1 ("e1000/e1000e/igb/igbvf/ixgb/ixgbe: Fix tests of unsigned in *_tx_map()") Signed-off-by: David Carlier --- drivers/net/ethernet/intel/igbvf/netdev.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c index 5d04541072b3..88c6ce5040e2 100644 --- a/drivers/net/ethernet/intel/igbvf/netdev.c +++ b/drivers/net/ethernet/intel/igbvf/netdev.c @@ -2190,8 +2190,6 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter, buffer_info->time_stamp = 0; buffer_info->length = 0; buffer_info->mapped_as_page = false; - if (count) - count--; /* clear timestamp and dma mappings for remaining portion of packet */ while (count--) { -- 2.53.0