diff mbox series

[net-next] ibmvnic: Free rwi on reset success

Message ID 20221017151516.45430-1-nnac123@linux.ibm.com (mailing list archive)
State Changes Requested
Delegated to: Netdev Maintainers
Headers show
Series [net-next] ibmvnic: Free rwi on reset success | expand

Checks

Context Check Description
netdev/tree_selection success Clearly marked for net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/subject_prefix success Link
netdev/cover_letter success Single patches do not need cover letters
netdev/patch_count success Link
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/cc_maintainers fail 3 blamed authors not CCed: drt@linux.ibm.com sukadev@linux.ibm.com davem@davemloft.net; 11 maintainers not CCed: linuxppc-dev@lists.ozlabs.org kuba@kernel.org drt@linux.ibm.com mpe@ellerman.id.au davem@davemloft.net npiggin@gmail.com christophe.leroy@csgroup.eu edumazet@google.com tlfalcon@linux.ibm.com sukadev@linux.ibm.com pabeni@redhat.com
netdev/build_clang success Errors and warnings before: 0 this patch: 0
netdev/module_param success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 0 this patch: 0
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 27 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Nick Child Oct. 17, 2022, 3:15 p.m. UTC
Free the rwi structure in the event that the last rwi in the list
processed successfully. The logic in commit 4f408e1fa6e1 ("ibmvnic:
retry reset if there are no other resets") introduces an issue that
results in a 32 byte memory leak whenever the last rwi in the list
gets processed.

Fixes: 4f408e1fa6e1 ("ibmvnic: retry reset if there are no other resets")
Signed-off-by: Nick Child <nnac123@linux.ibm.com>
---
 drivers/net/ethernet/ibm/ibmvnic.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

Comments

Jakub Kicinski Oct. 18, 2022, 6:45 p.m. UTC | #1
On Mon, 17 Oct 2022 10:15:16 -0500 Nick Child wrote:
> Subject: [PATCH net-next] ibmvnic: Free rwi on reset success

Why net-next? it's a fix, right? it should go to Linus in the current
release cycle, i.e. the next -rc release.

Please make sure to CC the authors of the change under Fixes, and 
the maintainers of the driver. ./scripts/get_maintainer is your friend.

> Free the rwi structure in the event that the last rwi in the list
> processed successfully. The logic in commit 4f408e1fa6e1 ("ibmvnic:
> retry reset if there are no other resets") introduces an issue that
> results in a 32 byte memory leak whenever the last rwi in the list
> gets processed.
> 
> Fixes: 4f408e1fa6e1 ("ibmvnic: retry reset if there are no other resets")
> Signed-off-by: Nick Child <nnac123@linux.ibm.com>
Nick Child Oct. 18, 2022, 8:01 p.m. UTC | #2
Hello Jakub,

Thanks for the review.

On 10/18/22 13:45, Jakub Kicinski wrote:
> On Mon, 17 Oct 2022 10:15:16 -0500 Nick Child wrote:
>> Subject: [PATCH net-next] ibmvnic: Free rwi on reset success
> 
> Why net-next? it's a fix, right? it should go to Linus in the current
> release cycle, i.e. the next -rc release.

Apologies, I must have misunderstood when to use net vs net-next.
The bug has been around since v5.14 so I did not want to clutter
net inbox with things not directly relevant to v6.1.
Would you like me to resend with the `net` tag?

> Please make sure to CC the authors of the change under Fixes, and
> the maintainers of the driver. ./scripts/get_maintainer is your friend.

The ibmvnic list of maintainers is due for an update. I have added the 
current team to the CC list. We will have a patch out soon to update 
MAINTAINERS.

Thanks again. Apologies for any confusion,
Nick Child
Jakub Kicinski Oct. 18, 2022, 8:06 p.m. UTC | #3
On Tue, 18 Oct 2022 15:01:13 -0500 Nick Child wrote:
> On 10/18/22 13:45, Jakub Kicinski wrote:
> > On Mon, 17 Oct 2022 10:15:16 -0500 Nick Child wrote:  
> >> Subject: [PATCH net-next] ibmvnic: Free rwi on reset success  
> > 
> > Why net-next? it's a fix, right? it should go to Linus in the current
> > release cycle, i.e. the next -rc release.  
> 
> Apologies, I must have misunderstood when to use net vs net-next.
> The bug has been around since v5.14 so I did not want to clutter
> net inbox with things not directly relevant to v6.1.
> Would you like me to resend with the `net` tag?

Yes, anything that's a fix for code which is already present in net
should go to net. It will then make it to Linus within a week, and
Greg KH & co. can pick it up for stable trees (like 5.14) some time
later.

> > Please make sure to CC the authors of the change under Fixes, and
> > the maintainers of the driver. ./scripts/get_maintainer is your friend.  
> 
> The ibmvnic list of maintainers is due for an update. I have added the 
> current team to the CC list. We will have a patch out soon to update 
> MAINTAINERS.

I figured that may be the case, if it's not a problem I'd CC everyone
even if you know some of the addresses will bounce. Removes the need
for us to manually check why people aren't CCed.

BTW when you send the update to MAINTAINERS please target net as well,
MAINTAINERS updates are fast-tracked like fixes.
diff mbox series

Patch

diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
index 65dbfbec487a..9282381a438f 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -3007,19 +3007,19 @@  static void __ibmvnic_reset(struct work_struct *work)
 		rwi = get_next_rwi(adapter);
 
 		/*
-		 * If there is another reset queued, free the previous rwi
-		 * and process the new reset even if previous reset failed
-		 * (the previous reset could have failed because of a fail
-		 * over for instance, so process the fail over).
-		 *
 		 * If there are no resets queued and the previous reset failed,
 		 * the adapter would be in an undefined state. So retry the
 		 * previous reset as a hard reset.
+		 *
+		 * Else, free the previous rwi and, if there is another reset
+		 * queued, process the new reset even if previous reset failed
+		 * (the previous reset could have failed because of a fail
+		 * over for instance, so process the fail over).
 		 */
-		if (rwi)
-			kfree(tmprwi);
-		else if (rc)
+		if (!rwi && rc)
 			rwi = tmprwi;
+		else
+			kfree(tmprwi);
 
 		if (rwi && (rwi->reset_reason == VNIC_RESET_FAILOVER ||
 			    rwi->reset_reason == VNIC_RESET_MOBILITY || rc))