> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of Aaron 
> Esau
> Sent: Sunday, March 29, 2026 9:52 PM
> To: [email protected]
> Cc: [email protected]; Nguyen, Anthony L <[email protected]>; 
> Kitszel, Przemyslaw <[email protected]>; Kubalewski, Arkadiusz 
> <[email protected]>; [email protected]; Aaron Esau 
> <[email protected]>
> Subject: [Intel-wired-lan] [PATCH net] i40e: fix memcmp of pointer in 
> i40e_hw_set_dcb_config()
>
> In i40e_hw_set_dcb_config(), both new_cfg and old_cfg are pointers to struct 
> i40e_dcbx_config, so sizeof(new_cfg) evaluates to the size of a pointer (8 
> bytes on 64-bit) rather than the size of the struct. > Likewise, &new_cfg and 
> &old_cfg are the addresses of the pointer variables on the stack, not the 
> addresses of the actual config structs.
>
> As a result, the memcmp never compares the actual configuration data, meaning 
> the "no change needed" early return never fires. Every call to this function 
> performs a full DCB reconfiguration (quiescing > all VSIs, reprogramming via 
> "Set LLDP MIB" AQC, and reconfiguring VEB/VSIs) even when the configuration 
> has not changed.
>
> Fix this by comparing the structs themselves rather than the pointers.
>
> Fixes: 4b208eaa8078 ("i40e: Add init and default config of software based 
> DCB")
> Cc: [email protected]
> Signed-off-by: Aaron Esau <[email protected]>
> ---
>
> Found using Coccinelle/spatch with a semantic patch that matches
> sizeof(ptr) and &ptr used together where ptr is a pointer type.
>
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>

Tested-by: Arpana Arland <[email protected]> (A Contingent worker at 
Intel)

Reply via email to