* [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).