[dpdk-stable] [PATCH 18.11] net/af_packet: fix for stale sockets

John W. Linville linville at tuxdriver.com
Mon Aug 19 20:35:05 CEST 2019


As indicated, I've already seen this patch. Please merge it as Abhishek
is requesting.

Thanks,

John

On Mon, Aug 19, 2019 at 06:44:20PM +0530, abhishek.sachan at altran.com wrote:
> From: abhishek sachan <abhishek.sachan at altran.com>
> 
> af_packet driver is leaving stale socket after device is removed.
> Ring buffers are memory mapped when device is added using rte_dev_probe.
> There is no corresponding munmap call when device is removed/closed.
> This commit fixes the issue by calling munmap
> from rte_pmd_af_packet_remove().
> 
> Bugzilla ID: 339
> 
> Signed-off-by: abhishek sachan <abhishek.sachan at altran.com>
> Reviewed-by: John W. Linville <linville at redhat.com>
> ---
>  drivers/net/af_packet/rte_eth_af_packet.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
> index 264cfc0..657ad85 100644
> --- a/drivers/net/af_packet/rte_eth_af_packet.c
> +++ b/drivers/net/af_packet/rte_eth_af_packet.c
> @@ -972,6 +972,7 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)
>  {
>  	struct rte_eth_dev *eth_dev = NULL;
>  	struct pmd_internals *internals;
> +	struct tpacket_req *req;
>  	unsigned q;
>  
>  	PMD_LOG(INFO, "Closing AF_PACKET ethdev on numa socket %u",
> @@ -992,7 +993,10 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev)
>  		return rte_eth_dev_release_port(eth_dev);
>  
>  	internals = eth_dev->data->dev_private;
> +	req = &internals->req;
>  	for (q = 0; q < internals->nb_queues; q++) {
> +		munmap(internals->rx_queue[q].map,
> +			2 * req->tp_block_size * req->tp_block_nr);
>  		rte_free(internals->rx_queue[q].rd);
>  		rte_free(internals->tx_queue[q].rd);
>  	}
> -- 
> 2.7.4
> 
> 

-- 
John W. Linville		Someday the world will need a hero, and you
linville at tuxdriver.com			might be all we have.  Be ready.


More information about the stable mailing list