diff
- #define ICMPMSGOUT_INC_STATS(net, field) SNMP_INC_STATS_ATOMIC_LONG((net)->mib.icmpmsg_statistics, field+256)
+ #define ICMPMSGOUT_INC_STATS(net, field) \
+    do { \
+        if (field < 256) { \
+            SNMP_INC_STATS_ATOMIC_LONG((net)->mib.icmpmsg_statistics, (int)field + 256); \
+        } else { \
+            pr_warn("Invalid ICMP field: %u\n", field); \
+        } \
+    } while (0)

void icmp_out_count(struct net *net, unsigned char type)
{
    ICMPMSGOUT_INC_STATS(net, type);
    ICMP_INC_STATS(net, ICMP_MIB_OUTMSGS);
}
