2022-04-08 02:38:57

by baihaowen

[permalink] [raw]
Subject: [PATCH] sfc: ef10: Fix assigning negative value to unsigned variable

fix warning reported by smatch:
251 drivers/net/ethernet/sfc/ef10.c:2259 efx_ef10_tx_tso_desc()
warn: assigning (-208) to unsigned variable 'ip_tot_len'

Signed-off-by: Haowen Bai <[email protected]>
---
drivers/net/ethernet/sfc/ef10.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
index 50d535981a35..1434510dbdc9 100644
--- a/drivers/net/ethernet/sfc/ef10.c
+++ b/drivers/net/ethernet/sfc/ef10.c
@@ -2218,7 +2218,7 @@ int efx_ef10_tx_tso_desc(struct efx_tx_queue *tx_queue, struct sk_buff *skb,
u16 outer_ipv4_id = 0;
struct tcphdr *tcp;
struct iphdr *ip;
- u16 ip_tot_len;
+ s16 ip_tot_len;
u32 seqnum;
u32 mss;

--
2.7.4


2022-04-08 18:41:51

by Edward Cree

[permalink] [raw]
Subject: Re: [PATCH] sfc: ef10: Fix assigning negative value to unsigned variable

On 08/04/2022 03:11, Haowen Bai wrote:
> fix warning reported by smatch:
> 251 drivers/net/ethernet/sfc/ef10.c:2259 efx_ef10_tx_tso_desc()
> warn: assigning (-208) to unsigned variable 'ip_tot_len'
>
> Signed-off-by: Haowen Bai <[email protected]>
> ---
> drivers/net/ethernet/sfc/ef10.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
> index 50d535981a35..1434510dbdc9 100644
> --- a/drivers/net/ethernet/sfc/ef10.c
> +++ b/drivers/net/ethernet/sfc/ef10.c
> @@ -2218,7 +2218,7 @@ int efx_ef10_tx_tso_desc(struct efx_tx_queue *tx_queue, struct sk_buff *skb,
> u16 outer_ipv4_id = 0;
> struct tcphdr *tcp;
> struct iphdr *ip;
> - u16 ip_tot_len;
> + s16 ip_tot_len;

The debug-warning on line 2260 relies on this being unsigned; it would
be preferable to change the assignment on the line above to cast the
value to u16, or to assign "0x10000 - EFX_TSO2_MAX_HDRLEN", since that
is the actual semantics of the value.

-ed

> u32 seqnum;
> u32 mss;
>
>