Commit 1b80fec7 authored by Wang Hai's avatar Wang Hai Committed by Jakub Kicinski
Browse files

ixgbe, xsk: clean up the resources in ixgbe_xsk_pool_enable error path



In ixgbe_xsk_pool_enable(), if ixgbe_xsk_wakeup() fails,
We should restore the previous state and clean up the
resources. Add the missing clear af_xdp_zc_qps and unmap dma
to fix this bug.

Fixes: d49e286d ("ixgbe: add tracking of AF_XDP zero-copy state for each queue pair")
Fixes: 4a9b32f3 ("ixgbe: fix potential RX buffer starvation for AF_XDP")
Signed-off-by: default avatarWang Hai <wanghai38@huawei.com>
Acked-by: default avatarMagnus Karlsson <magnus.karlsson@intel.com>
Tested-by: default avatarSandeep Penigalapati <sandeep.penigalapati@intel.com>
Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
Link: https://lore.kernel.org/r/20210817203736.3529939-1-anthony.l.nguyen@intel.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent e5e487a2
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -52,9 +52,12 @@ static int ixgbe_xsk_pool_enable(struct ixgbe_adapter *adapter,

		/* Kick start the NAPI context so that receiving will start */
		err = ixgbe_xsk_wakeup(adapter->netdev, qid, XDP_WAKEUP_RX);
		if (err)
		if (err) {
			clear_bit(qid, adapter->af_xdp_zc_qps);
			xsk_pool_dma_unmap(pool, IXGBE_RX_DMA_ATTR);
			return err;
		}
	}

	return 0;
}