• Arnd Bergmann's avatar
    netfilter: nf_flow_table: fix big-endian integer overflow · c9b3b820
    Arnd Bergmann authored
    In some configurations, gcc reports an integer overflow:
    
    net/netfilter/nf_flow_table_offload.c: In function 'nf_flow_rule_match':
    net/netfilter/nf_flow_table_offload.c:80:21: error: unsigned conversion from 'int' to '__be16' {aka 'short unsigned int'} changes value from '327680' to '0' [-Werror=overflow]
       mask->tcp.flags = TCP_FLAG_RST | TCP_FLAG_FIN;
                         ^~~~~~~~~~~~
    
    From what I can tell, we want the upper 16 bits of these constants,
    so they need to be shifted in cpu-endian mode.
    
    Fixes: c29f74e0 ("netfilter: nf_flow_table: hardware offload support")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    c9b3b820
nf_flow_table_offload.c 22.7 KB