[dpdk-dev] [PATCH] ixgbe: fix buffer overrun bug in non-bulk alloc mode setup

Ananyev, Konstantin konstantin.ananyev at intel.com
Thu Mar 19 20:42:20 CET 2015



> -----Original Message-----
> From: Wodkowski, PawelX
> Sent: Thursday, March 19, 2015 4:09 PM
> To: dev at dpdk.org
> Cc: De Lara Guarch, Pablo; Ananyev, Konstantin; Mcnamara, John; Zhang, Helin; Wodkowski, PawelX
> Subject: [PATCH] ixgbe: fix buffer overrun bug in non-bulk alloc mode setup
> 
> From: Pawel Wodkowski <pawelx.wdkowski at intel.com>
> 
> When bulk alloc is enabled at compile time but preconditions for
> it are not met at runtime the ixgbe_reset_rx_queue() function
> overrides rxq->sw_ring not allocated elements.
> 
> Fixes: 01fa1d6 ("ixgbe: unify Rx setup")
> Signed-off-by: Pawel Wodkowski <pawelx.wodkowski at intel.com>

Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com>

> ---
>  lib/librte_pmd_ixgbe/ixgbe_rxtx.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
> index 42f0aa5..dddc12f 100644
> --- a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
> +++ b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
> @@ -2111,8 +2111,8 @@ ixgbe_reset_rx_queue(struct ixgbe_hw *hw, struct ixgbe_rx_queue *rxq)
>  	 * entries is always allocated
>  	 */
>  	memset(&rxq->fake_mbuf, 0x0, sizeof(rxq->fake_mbuf));
> -	for (i = 0; i < RTE_PMD_IXGBE_RX_MAX_BURST; ++i) {
> -		rxq->sw_ring[rxq->nb_rx_desc + i].mbuf = &rxq->fake_mbuf;
> +	for (i = rxq->nb_rx_desc; i < len; ++i) {
> +		rxq->sw_ring[i].mbuf = &rxq->fake_mbuf;
>  	}
> 
>  	rxq->rx_nb_avail = 0;
> --
> 1.9.1



More information about the dev mailing list