OSDN Git Service

flow_dissector: fix byteorder of dissected ICMP ID
authorAlexander Lobakin <alobakin@pm.me>
Fri, 12 Mar 2021 20:08:57 +0000 (20:08 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 14 Mar 2021 21:30:20 +0000 (14:30 -0700)
flow_dissector_key_icmp::id is of type u16 (CPU byteorder),
ICMP header has its ID field in network byteorder obviously.
Sparse says:

net/core/flow_dissector.c:178:43: warning: restricted __be16 degrades to integer

Convert ID value to CPU byteorder when storing it into
flow_dissector_key_icmp.

Fixes: 5dec597e5cd0 ("flow_dissector: extract more ICMP information")
Signed-off-by: Alexander Lobakin <alobakin@pm.me>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/flow_dissector.c

index 2ef2224..a96a4f5 100644 (file)
@@ -176,7 +176,7 @@ void skb_flow_get_icmp_tci(const struct sk_buff *skb,
         * avoid confusion with packets without such field
         */
        if (icmp_has_id(ih->type))
-               key_icmp->id = ih->un.echo.id ? : 1;
+               key_icmp->id = ih->un.echo.id ? ntohs(ih->un.echo.id) : 1;
        else
                key_icmp->id = 0;
 }