* [PATCH net-next v1] net: mvneta: Avoid the misuse of the '_t' variants
@ 2024-09-05 6:36 Yan Zhen
2024-09-05 8:30 ` David Laight
2024-09-07 1:55 ` Jakub Kicinski
0 siblings, 2 replies; 3+ messages in thread
From: Yan Zhen @ 2024-09-05 6:36 UTC (permalink / raw)
To: marcin.s.wojtas, davem, edumazet, kuba, pabeni
Cc: netdev, linux-kernel, openkernel.kernel, horms, David.Laight,
Yan Zhen
Type conversions (especially when narrowing down types) can lead to
unexpected behavior and should be done with extreme caution.
In this case if someone tries to set the tx_pending to 65536(0x10000),
after forcing it to convert to u16, it becomes 0x0000, they will get
the minimum supported size and not the maximum.
Based on previous discussions [1], such behavior may confuse users or even
create unexpected errors.
[1] https://lore.kernel.org/netdev/d23dfbf563714d7090d163a075ca9a51@AcuMS.aculab.com/
Signed-off-by: Yan Zhen <yanzhen@vivo.com>
---
drivers/net/ethernet/marvell/mvneta.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index d72b2d5f96db..b41de182cc88 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -4753,8 +4753,8 @@ mvneta_ethtool_set_ringparam(struct net_device *dev,
pp->rx_ring_size = ring->rx_pending < MVNETA_MAX_RXD ?
ring->rx_pending : MVNETA_MAX_RXD;
- pp->tx_ring_size = clamp_t(u16, ring->tx_pending,
- MVNETA_MAX_SKB_DESCS * 2, MVNETA_MAX_TXD);
+ pp->tx_ring_size = clamp(ring->tx_pending,
+ MVNETA_MAX_SKB_DESCS * 2, MVNETA_MAX_TXD);
if (pp->tx_ring_size != ring->tx_pending)
netdev_warn(dev, "TX queue size set to %u (requested %u)\n",
pp->tx_ring_size, ring->tx_pending);
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [PATCH net-next v1] net: mvneta: Avoid the misuse of the '_t' variants
2024-09-05 6:36 [PATCH net-next v1] net: mvneta: Avoid the misuse of the '_t' variants Yan Zhen
@ 2024-09-05 8:30 ` David Laight
2024-09-07 1:55 ` Jakub Kicinski
1 sibling, 0 replies; 3+ messages in thread
From: David Laight @ 2024-09-05 8:30 UTC (permalink / raw)
To: 'Yan Zhen', marcin.s.wojtas@gmail.com,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
openkernel.kernel@vivo.com, horms@kernel.org
From: Yan Zhen
> Sent: 05 September 2024 07:37
>
> Type conversions (especially when narrowing down types) can lead to
> unexpected behavior and should be done with extreme caution.
>
> In this case if someone tries to set the tx_pending to 65536(0x10000),
> after forcing it to convert to u16, it becomes 0x0000, they will get
> the minimum supported size and not the maximum.
>
> Based on previous discussions [1], such behavior may confuse users or even
> create unexpected errors.
>
> [1] https://lore.kernel.org/netdev/d23dfbf563714d7090d163a075ca9a51@AcuMS.aculab.com/
>
> Signed-off-by: Yan Zhen <yanzhen@vivo.com>
Reviewed-by: david.laight@aculab.com
> ---
> drivers/net/ethernet/marvell/mvneta.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
> index d72b2d5f96db..b41de182cc88 100644
> --- a/drivers/net/ethernet/marvell/mvneta.c
> +++ b/drivers/net/ethernet/marvell/mvneta.c
> @@ -4753,8 +4753,8 @@ mvneta_ethtool_set_ringparam(struct net_device *dev,
> pp->rx_ring_size = ring->rx_pending < MVNETA_MAX_RXD ?
> ring->rx_pending : MVNETA_MAX_RXD;
>
> - pp->tx_ring_size = clamp_t(u16, ring->tx_pending,
> - MVNETA_MAX_SKB_DESCS * 2, MVNETA_MAX_TXD);
> + pp->tx_ring_size = clamp(ring->tx_pending,
> + MVNETA_MAX_SKB_DESCS * 2, MVNETA_MAX_TXD);
> if (pp->tx_ring_size != ring->tx_pending)
> netdev_warn(dev, "TX queue size set to %u (requested %u)\n",
> pp->tx_ring_size, ring->tx_pending);
> --
> 2.34.1
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next v1] net: mvneta: Avoid the misuse of the '_t' variants
2024-09-05 6:36 [PATCH net-next v1] net: mvneta: Avoid the misuse of the '_t' variants Yan Zhen
2024-09-05 8:30 ` David Laight
@ 2024-09-07 1:55 ` Jakub Kicinski
1 sibling, 0 replies; 3+ messages in thread
From: Jakub Kicinski @ 2024-09-07 1:55 UTC (permalink / raw)
To: Yan Zhen
Cc: marcin.s.wojtas, davem, edumazet, pabeni, netdev, linux-kernel,
openkernel.kernel, horms, David.Laight
On Thu, 5 Sep 2024 14:36:45 +0800 Yan Zhen wrote:
> In this case if someone tries to set the tx_pending to 65536(0x10000),
> after forcing it to convert to u16, it becomes 0x0000, they will get
> the minimum supported size and not the maximum.
Core validates against tx_max_pending before calling the driver.
--
pw-bot: reject
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-09-07 1:55 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-05 6:36 [PATCH net-next v1] net: mvneta: Avoid the misuse of the '_t' variants Yan Zhen
2024-09-05 8:30 ` David Laight
2024-09-07 1:55 ` Jakub Kicinski
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).