summaryrefslogtreecommitdiff
path: root/include/linux/ks8842.h
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2014-04-12 13:17:57 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-05-31 13:20:27 -0700
commitd6421db1dbd6a0c6fd6626c6c59d29204db76434 (patch)
treee2b9888721bba3aefc9a659276ecb14f71414ffe /include/linux/ks8842.h
parentf661428d2efe8e3dc0912b79305e36bde54a8068 (diff)
netfilter: nf_tables: fix nft_cmp_fast failure on big endian for size < 4
commit b855d416dc17061ebb271ea7ef1201d100531770 upstream. nft_cmp_fast is used for equality comparisions of size <= 4. For comparisions of size < 4 byte a mask is calculated that is applied to both the data from userspace (during initialization) and the register value (during runtime). Both values are stored using (in effect) memcpy to a memory area that is then interpreted as u32 by nft_cmp_fast. This works fine on little endian since smaller types have the same base address, however on big endian this is not true and the smaller types are interpreted as a big number with trailing zero bytes. The mask therefore must not include the lower bytes, but the higher bytes on big endian. Add a helper function that does a cpu_to_le32 to switch the bytes on big endian. Since we're dealing with a mask of just consequitive bits, this works out fine. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/ks8842.h')
0 files changed, 0 insertions, 0 deletions