On Wed,  3 Jul 2019 12:37:50 +0200
Jose Abreu <jose.ab...@synopsys.com> wrote:

> @@ -1498,8 +1479,9 @@ static void free_dma_rx_desc_resources(struct 
> stmmac_priv *priv)
>                                         sizeof(struct dma_extended_desc),
>                                         rx_q->dma_erx, rx_q->dma_rx_phy);
>  
> -             kfree(rx_q->rx_skbuff_dma);
> -             kfree(rx_q->rx_skbuff);
> +             kfree(rx_q->buf_pool);
> +             if (rx_q->page_pool)
> +                     page_pool_request_shutdown(rx_q->page_pool);
>       }
>  }
>  

The page_pool_request_shutdown() API return indication if there are any
in-flight frames/pages, to know when it is safe to call
page_pool_free(), which you are also missing a call to.

This page_pool_request_shutdown() is only intended to be called from
xdp_rxq_info_unreg() code, that handles and schedule a work queue if it
need to wait for in-flight frames/pages.

-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Principal Kernel Engineer at Red Hat
  LinkedIn: http://www.linkedin.com/in/brouer

Reply via email to