netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/2] net: ena: two cleanups
@ 2024-11-01 21:48 Rosen Penev
  2024-11-01 21:48 ` [PATCH net-next 1/2] net: ena: remove devm from ethtool Rosen Penev
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Rosen Penev @ 2024-11-01 21:48 UTC (permalink / raw)
  To: netdev
  Cc: Shay Agroskin, Arthur Kiyanovski, David Arinzon, Noam Dagan,
	Saeed Bishara, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Jian Shen, Salil Mehta, Jijie Shao,
	open list

Simplify some code.

Rosen Penev (2):
  net: ena: remove devm from ethtool
  net: ena: simplify some pointer addition

 drivers/net/ethernet/amazon/ena/ena_ethtool.c | 31 ++++++++-----------
 1 file changed, 13 insertions(+), 18 deletions(-)

-- 
2.47.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH net-next 1/2] net: ena: remove devm from ethtool
  2024-11-01 21:48 [PATCH net-next 0/2] net: ena: two cleanups Rosen Penev
@ 2024-11-01 21:48 ` Rosen Penev
  2024-11-04 13:35   ` Shay Agroskin
  2024-11-01 21:48 ` [PATCH net-next 2/2] net: ena: simplify some pointer addition Rosen Penev
  2024-11-05  2:30 ` [PATCH net-next 0/2] net: ena: two cleanups patchwork-bot+netdevbpf
  2 siblings, 1 reply; 6+ messages in thread
From: Rosen Penev @ 2024-11-01 21:48 UTC (permalink / raw)
  To: netdev
  Cc: Shay Agroskin, Arthur Kiyanovski, David Arinzon, Noam Dagan,
	Saeed Bishara, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Jian Shen, Salil Mehta, Jijie Shao,
	open list

There's no need for devm bloat here. In addition, these are freed right
before the function exits.

Also swapped kcalloc order for consistency.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/net/ethernet/amazon/ena/ena_ethtool.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/amazon/ena/ena_ethtool.c b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
index e1c622b40a27..fa9d7b8ec00d 100644
--- a/drivers/net/ethernet/amazon/ena/ena_ethtool.c
+++ b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
@@ -1128,22 +1128,18 @@ static void ena_dump_stats_ex(struct ena_adapter *adapter, u8 *buf)
 		return;
 	}
 
-	strings_buf = devm_kcalloc(&adapter->pdev->dev,
-				   ETH_GSTRING_LEN, strings_num,
-				   GFP_ATOMIC);
+	strings_buf = kcalloc(strings_num, ETH_GSTRING_LEN, GFP_ATOMIC);
 	if (!strings_buf) {
 		netif_err(adapter, drv, netdev,
 			  "Failed to allocate strings_buf\n");
 		return;
 	}
 
-	data_buf = devm_kcalloc(&adapter->pdev->dev,
-				strings_num, sizeof(u64),
-				GFP_ATOMIC);
+	data_buf = kcalloc(strings_num, sizeof(u64), GFP_ATOMIC);
 	if (!data_buf) {
 		netif_err(adapter, drv, netdev,
 			  "Failed to allocate data buf\n");
-		devm_kfree(&adapter->pdev->dev, strings_buf);
+		kfree(strings_buf);
 		return;
 	}
 
@@ -1165,8 +1161,8 @@ static void ena_dump_stats_ex(struct ena_adapter *adapter, u8 *buf)
 				  strings_buf + i * ETH_GSTRING_LEN,
 				  data_buf[i]);
 
-	devm_kfree(&adapter->pdev->dev, strings_buf);
-	devm_kfree(&adapter->pdev->dev, data_buf);
+	kfree(strings_buf);
+	kfree(data_buf);
 }
 
 void ena_dump_stats_to_buf(struct ena_adapter *adapter, u8 *buf)
-- 
2.47.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH net-next 2/2] net: ena: simplify some pointer addition
  2024-11-01 21:48 [PATCH net-next 0/2] net: ena: two cleanups Rosen Penev
  2024-11-01 21:48 ` [PATCH net-next 1/2] net: ena: remove devm from ethtool Rosen Penev
@ 2024-11-01 21:48 ` Rosen Penev
  2024-11-04 13:36   ` Shay Agroskin
  2024-11-05  2:30 ` [PATCH net-next 0/2] net: ena: two cleanups patchwork-bot+netdevbpf
  2 siblings, 1 reply; 6+ messages in thread
From: Rosen Penev @ 2024-11-01 21:48 UTC (permalink / raw)
  To: netdev
  Cc: Shay Agroskin, Arthur Kiyanovski, David Arinzon, Noam Dagan,
	Saeed Bishara, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Jian Shen, Salil Mehta, Jijie Shao,
	open list

Use ethtool_sprintf to simplify the code.

Because strings_buf is separate from buf, it needs to be incremented
separately.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/net/ethernet/amazon/ena/ena_ethtool.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/amazon/ena/ena_ethtool.c b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
index fa9d7b8ec00d..96fa55a88faf 100644
--- a/drivers/net/ethernet/amazon/ena/ena_ethtool.c
+++ b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
@@ -1120,7 +1120,7 @@ static void ena_dump_stats_ex(struct ena_adapter *adapter, u8 *buf)
 	u8 *strings_buf;
 	u64 *data_buf;
 	int strings_num;
-	int i, rc;
+	int i;
 
 	strings_num = ena_get_sw_stats_count(adapter);
 	if (strings_num <= 0) {
@@ -1149,17 +1149,16 @@ static void ena_dump_stats_ex(struct ena_adapter *adapter, u8 *buf)
 	/* If there is a buffer, dump stats, otherwise print them to dmesg */
 	if (buf)
 		for (i = 0; i < strings_num; i++) {
-			rc = snprintf(buf, ETH_GSTRING_LEN + sizeof(u64),
-				      "%s %llu\n",
-				      strings_buf + i * ETH_GSTRING_LEN,
-				      data_buf[i]);
-			buf += rc;
+			ethtool_sprintf(&buf, "%s %llu\n", strings_buf,
+					data_buf[i]);
+			strings_buf += ETH_GSTRING_LEN;
 		}
 	else
-		for (i = 0; i < strings_num; i++)
+		for (i = 0; i < strings_num; i++) {
 			netif_err(adapter, drv, netdev, "%s: %llu\n",
-				  strings_buf + i * ETH_GSTRING_LEN,
-				  data_buf[i]);
+				  strings_buf, data_buf[i]);
+			strings_buf += ETH_GSTRING_LEN;
+		}
 
 	kfree(strings_buf);
 	kfree(data_buf);
-- 
2.47.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next 1/2] net: ena: remove devm from ethtool
  2024-11-01 21:48 ` [PATCH net-next 1/2] net: ena: remove devm from ethtool Rosen Penev
@ 2024-11-04 13:35   ` Shay Agroskin
  0 siblings, 0 replies; 6+ messages in thread
From: Shay Agroskin @ 2024-11-04 13:35 UTC (permalink / raw)
  To: Rosen Penev
  Cc: netdev, Arthur Kiyanovski, David Arinzon, Noam Dagan,
	Saeed Bishara, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Jian Shen, Salil Mehta, Jijie Shao,
	open list


Rosen Penev <rosenp@gmail.com> writes:

> There's no need for devm bloat here. In addition, these are 
> freed right
> before the function exits.
>
> Also swapped kcalloc order for consistency.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
>  drivers/net/ethernet/amazon/ena/ena_ethtool.c | 14 
>  +++++---------
>  1 file changed, 5 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/ethernet/amazon/ena/ena_ethtool.c 
> b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
> index e1c622b40a27..fa9d7b8ec00d 100644
> --- a/drivers/net/ethernet/amazon/ena/ena_ethtool.c
> +++ b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
> @@ -1128,22 +1128,18 @@ static void ena_dump_stats_ex(struct 
> ena_adapter *adapter, u8 *buf)
>  		return;

lgtm. thanks you for submitting this patch

Reviewed-by: Shay Agroskin <shayagr@amazon.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next 2/2] net: ena: simplify some pointer addition
  2024-11-01 21:48 ` [PATCH net-next 2/2] net: ena: simplify some pointer addition Rosen Penev
@ 2024-11-04 13:36   ` Shay Agroskin
  0 siblings, 0 replies; 6+ messages in thread
From: Shay Agroskin @ 2024-11-04 13:36 UTC (permalink / raw)
  To: Rosen Penev
  Cc: netdev, Arthur Kiyanovski, David Arinzon, Noam Dagan,
	Saeed Bishara, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Jian Shen, Salil Mehta, Jijie Shao,
	open list


Rosen Penev <rosenp@gmail.com> writes:

> Use ethtool_sprintf to simplify the code.
>
> Because strings_buf is separate from buf, it needs to be 
> incremented
> separately.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
>  drivers/net/ethernet/amazon/ena/ena_ethtool.c | 17 
>  ++++++++---------
>  1 file changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/ethernet/amazon/ena/ena_ethtool.c 
> b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
> index fa9d7b8ec00d..96fa55a88faf 100644
> --- a/drivers/net/ethernet/amazon/ena/ena_ethtool.c
> +++ b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
> @@ -1120,7 +1120,7 @@ static void ena_dump_stats_ex(struct 
> ena_adapter *adapter, u8 *buf)
>  	u8 *strings_buf;
>  	u64 *data_buf;
>  	int strings_num;
> -	int i, rc;
> +	int i;
>
>  	strings_num = ena_get_sw_stats_count(adapter);
>  	if (strings_num <= 0) {
> @@ -1149,17 +1149,16 @@ static void ena_dump_stats_ex(struct 
> ena_adapter *adapter, u8 *buf)
>  	/* If there is a buffer, dump stats, otherwise print them 
>  to dmesg */
>  	if (buf)
>  		for (i = 0; i < strings_num; i++) {
> -			rc = snprintf(buf, ETH_GSTRING_LEN + 
> sizeof(u64),
> -				      "%s %llu\n",
> -				      strings_buf + i * 
> ETH_GSTRING_LEN,
> -				      data_buf[i]);
> -			buf += rc;
> +			ethtool_sprintf(&buf, "%s %llu\n", 
> strings_buf,
> +					data_buf[i]);
> +			strings_buf += ETH_GSTRING_LEN;
>  		}
>  	else
> -		for (i = 0; i < strings_num; i++)
> +		for (i = 0; i < strings_num; i++) {
>  			netif_err(adapter, drv, netdev, "%s: 
>  %llu\n",
> -				  strings_buf + i * 
> ETH_GSTRING_LEN,
> -				  data_buf[i]);
> +				  strings_buf, data_buf[i]);
> +			strings_buf += ETH_GSTRING_LEN;
> +		}
>
>  	kfree(strings_buf);
>  	kfree(data_buf);

Thank you for submitting the patch. If I'm not mistaken, there are 
some bugs introduced here:

1. You update string_buf pointer itself, but later you pass the 
variable to kfree, this
   would likely end up freeing the wrong address (/causing a 
   kernel panic)
2. The ethtool_sprintf increases the `buf` pointer by 
ETH_GSTRING_LEN, while the previous code increased it
   by (ETH_GSTRING_LEN + sizeof(u64)) bytes.
   This causes a corruption in the buffer.

This function and mechanism is already planned for an overhaul in 
a future patch. We prefer to leave this patch out.

Thanks, Shay

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next 0/2] net: ena: two cleanups
  2024-11-01 21:48 [PATCH net-next 0/2] net: ena: two cleanups Rosen Penev
  2024-11-01 21:48 ` [PATCH net-next 1/2] net: ena: remove devm from ethtool Rosen Penev
  2024-11-01 21:48 ` [PATCH net-next 2/2] net: ena: simplify some pointer addition Rosen Penev
@ 2024-11-05  2:30 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-11-05  2:30 UTC (permalink / raw)
  To: Rosen Penev
  Cc: netdev, shayagr, akiyano, darinzon, ndagan, saeedb, andrew+netdev,
	davem, edumazet, kuba, pabeni, shenjian15, salil.mehta, shaojijie,
	linux-kernel

Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Fri,  1 Nov 2024 14:48:26 -0700 you wrote:
> Simplify some code.
> 
> Rosen Penev (2):
>   net: ena: remove devm from ethtool
>   net: ena: simplify some pointer addition
> 
>  drivers/net/ethernet/amazon/ena/ena_ethtool.c | 31 ++++++++-----------
>  1 file changed, 13 insertions(+), 18 deletions(-)

Here is the summary with links:
  - [net-next,1/2] net: ena: remove devm from ethtool
    https://git.kernel.org/netdev/net-next/c/d2068805f688
  - [net-next,2/2] net: ena: simplify some pointer addition
    (no matching commit)

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-11-05  2:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-01 21:48 [PATCH net-next 0/2] net: ena: two cleanups Rosen Penev
2024-11-01 21:48 ` [PATCH net-next 1/2] net: ena: remove devm from ethtool Rosen Penev
2024-11-04 13:35   ` Shay Agroskin
2024-11-01 21:48 ` [PATCH net-next 2/2] net: ena: simplify some pointer addition Rosen Penev
2024-11-04 13:36   ` Shay Agroskin
2024-11-05  2:30 ` [PATCH net-next 0/2] net: ena: two cleanups patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).