netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).