Files
linux/include/net
Patrick McHardy b855d416dc netfilter: nf_tables: fix nft_cmp_fast failure on big endian for size < 4
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>
2014-04-14 10:38:02 +02:00
..
2013-12-28 17:02:46 -05:00
2014-03-24 00:18:44 -04:00
2012-07-19 10:43:03 -07:00
2013-11-07 19:28:58 -05:00
2013-01-27 22:46:33 -05:00
2013-10-08 23:19:24 -04:00
2013-12-28 17:03:20 -05:00
2014-03-31 16:16:16 -04:00
2014-01-03 20:56:48 -05:00
2014-03-24 12:45:01 -04:00
2014-02-18 18:15:42 -05:00
2012-08-06 13:40:47 -07:00
2014-01-21 18:05:04 -08:00