mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2025-04-19 20:58:31 +09:00
ipv6: fix _DEVADD() and _DEVUPD() macros
ip6_rcv_core() is using: __IP6_ADD_STATS(net, idev, IPSTATS_MIB_NOECTPKTS + (ipv6_get_dsfield(hdr) & INET_ECN_MASK), max_t(unsigned short, 1, skb_shinfo(skb)->gso_segs)); This is currently evaluating both expressions twice. Fix _DEVADD() and _DEVUPD() macros to evaluate their arguments once. Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20250319212516.2385451-1-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
4a5524a2f7
commit
b709857ecb
@ -246,17 +246,20 @@ extern int sysctl_mld_qrv;
|
||||
#define _DEVADD(net, statname, mod, idev, field, val) \
|
||||
({ \
|
||||
struct inet6_dev *_idev = (idev); \
|
||||
unsigned long _field = (field); \
|
||||
unsigned long _val = (val); \
|
||||
if (likely(_idev != NULL)) \
|
||||
mod##SNMP_ADD_STATS((_idev)->stats.statname, (field), (val)); \
|
||||
mod##SNMP_ADD_STATS((net)->mib.statname##_statistics, (field), (val));\
|
||||
mod##SNMP_ADD_STATS((_idev)->stats.statname, _field, _val); \
|
||||
mod##SNMP_ADD_STATS((net)->mib.statname##_statistics, _field, _val);\
|
||||
})
|
||||
|
||||
#define _DEVUPD(net, statname, mod, idev, field, val) \
|
||||
({ \
|
||||
struct inet6_dev *_idev = (idev); \
|
||||
unsigned long _val = (val); \
|
||||
if (likely(_idev != NULL)) \
|
||||
mod##SNMP_UPD_PO_STATS((_idev)->stats.statname, field, (val)); \
|
||||
mod##SNMP_UPD_PO_STATS((net)->mib.statname##_statistics, field, (val));\
|
||||
mod##SNMP_UPD_PO_STATS((_idev)->stats.statname, field, _val); \
|
||||
mod##SNMP_UPD_PO_STATS((net)->mib.statname##_statistics, field, _val);\
|
||||
})
|
||||
|
||||
/* MIBs */
|
||||
|
Loading…
x
Reference in New Issue
Block a user