diff mbox series

[iwl-net,v1] ice: Fix XDP memory leak when NIC is brought up and down

Message ID 20230525105155.105870-1-kamil.maziarz@intel.com
State Changes Requested
Delegated to: Anthony Nguyen
Headers show
Series [iwl-net,v1] ice: Fix XDP memory leak when NIC is brought up and down | expand

Commit Message

Kamil Maziarz May 25, 2023, 10:51 a.m. UTC
Fix the buffer leak that occurs while switching
the port up and down with traffic and XDP by
checking for an active XDP program and freeing all empty TX buffers.

Fixes: cdedef59deb0 ("ice: Configure VSIs for Tx/Rx")
Signed-off-by: Kamil Maziarz <kamil.maziarz@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_main.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Rout, ChandanX May 29, 2023, 4:37 p.m. UTC | #1
>-----Original Message-----
>From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
>Maziarz, Kamil
>Sent: 25 May 2023 16:22
>To: intel-wired-lan@lists.osuosl.org
>Cc: Maziarz, Kamil <kamil.maziarz@intel.com>
>Subject: [Intel-wired-lan] [PATCH iwl-net v1] ice: Fix XDP memory leak when
>NIC is brought up and down
>
>Fix the buffer leak that occurs while switching the port up and down with
>traffic and XDP by checking for an active XDP program and freeing all empty TX
>buffers.
>
>Fixes: cdedef59deb0 ("ice: Configure VSIs for Tx/Rx")
>Signed-off-by: Kamil Maziarz <kamil.maziarz@intel.com>
>---
> drivers/net/ethernet/intel/ice/ice_main.c | 4 ++++
> 1 file changed, 4 insertions(+)
>

Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
Maciej Fijalkowski May 30, 2023, 3:58 p.m. UTC | #2
On Thu, May 25, 2023 at 12:51:55PM +0200, Kamil Maziarz wrote:
> Fix the buffer leak that occurs while switching
> the port up and down with traffic and XDP by
> checking for an active XDP program and freeing all empty TX buffers.

How did you spot this? Was this by code walkthrough, or?
Tx buffers are not particularly empty, they are mapped/allocated.
> 
> Fixes: cdedef59deb0 ("ice: Configure VSIs for Tx/Rx")

i think it deserves a fixes tag which points to XDP support being added.
The code you are referring to was just fine before XDP support.

> Signed-off-by: Kamil Maziarz <kamil.maziarz@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_main.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
> index a1f7c8edc22f..03513d4871ab 100644
> --- a/drivers/net/ethernet/intel/ice/ice_main.c
> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> @@ -7056,6 +7056,10 @@ int ice_down(struct ice_vsi *vsi)
>  	ice_for_each_txq(vsi, i)
>  		ice_clean_tx_ring(vsi->tx_rings[i]);
>  
> +	if (ice_is_xdp_ena_vsi(vsi))
> +		ice_for_each_xdp_txq(vsi, i)
> +			ice_clean_tx_ring(vsi->xdp_rings[i]);
> +
>  	ice_for_each_rxq(vsi, i)
>  		ice_clean_rx_ring(vsi->rx_rings[i]);
>  
> -- 
> 2.31.1
> 
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan@osuosl.org
> https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
Kamil Maziarz June 6, 2023, 10:32 a.m. UTC | #3
>-----Original Message-----
>From: Fijalkowski, Maciej <maciej.fijalkowski@intel.com> 
>Sent: wtorek, 30 maja 2023 17:59
>To: Maziarz, Kamil <kamil.maziarz@intel.com>
>Cc: intel-wired-lan@lists.osuosl.org
>Subject: Re: [Intel-wired-lan] [PATCH iwl-net v1] ice: Fix XDP memory leak when NIC is brought up and down
>
>On Thu, May 25, 2023 at 12:51:55PM +0200, Kamil Maziarz wrote:
>> Fix the buffer leak that occurs while switching the port up and down 
>> with traffic and XDP by checking for an active XDP program and freeing 
>> all empty TX buffers.
>
>How did you spot this? Was this by code walkthrough, or?

While monitoring the XDP flow I noticed that after doing link down 
and then link up the traffic wasn't returning properly.

>Tx buffers are not particularly empty, they are mapped/allocated.
>> 
>> Fixes: cdedef59deb0 ("ice: Configure VSIs for Tx/Rx")
>
>i think it deserves a fixes tag which points to XDP support being added.
>The code you are referring to was just fine before XDP support.

I agree, changed Fixes tag in the next version

>
>> Signed-off-by: Kamil Maziarz <kamil.maziarz@intel.com>
>> ---
>>  drivers/net/ethernet/intel/ice/ice_main.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>> 
>> diff --git a/drivers/net/ethernet/intel/ice/ice_main.c 
>> b/drivers/net/ethernet/intel/ice/ice_main.c
>> index a1f7c8edc22f..03513d4871ab 100644
>> --- a/drivers/net/ethernet/intel/ice/ice_main.c
>> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
>> @@ -7056,6 +7056,10 @@ int ice_down(struct ice_vsi *vsi)
>>  	ice_for_each_txq(vsi, i)
>>  		ice_clean_tx_ring(vsi->tx_rings[i]);
>>  
>> +	if (ice_is_xdp_ena_vsi(vsi))
>> +		ice_for_each_xdp_txq(vsi, i)
>> +			ice_clean_tx_ring(vsi->xdp_rings[i]);
>> +
>>  	ice_for_each_rxq(vsi, i)
>>  		ice_clean_rx_ring(vsi->rx_rings[i]);
>>  
>> --
>> 2.31.1
>> 
>> _______________________________________________
>> Intel-wired-lan mailing list
>> Intel-wired-lan@osuosl.org
>> https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
diff mbox series

Patch

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index a1f7c8edc22f..03513d4871ab 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -7056,6 +7056,10 @@  int ice_down(struct ice_vsi *vsi)
 	ice_for_each_txq(vsi, i)
 		ice_clean_tx_ring(vsi->tx_rings[i]);
 
+	if (ice_is_xdp_ena_vsi(vsi))
+		ice_for_each_xdp_txq(vsi, i)
+			ice_clean_tx_ring(vsi->xdp_rings[i]);
+
 	ice_for_each_rxq(vsi, i)
 		ice_clean_rx_ring(vsi->rx_rings[i]);