Russell King
ae6d80f62c
netfilter: ipset: fix unaligned atomic access
...
[ Upstream commit 7150284600 ]
When using ip_set with counters and comment, traffic causes the kernel
to panic on 32-bit ARM:
Alignment trap: not handling instruction e1b82f9f at [<bf01b0dc>]
Unhandled fault: alignment exception (0x221) at 0xea08133c
PC is at ip_set_match_extensions+0xe0/0x224 [ip_set]
The problem occurs when we try to update the 64-bit counters - the
faulting address above is not 64-bit aligned. The problem occurs
due to the way elements are allocated, for example:
set->dsize = ip_set_elem_len(set, tb, 0, 0);
map = ip_set_alloc(sizeof(*map) + elements * set->dsize);
If the element has a requirement for a member to be 64-bit aligned,
and set->dsize is not a multiple of 8, but is a multiple of four,
then every odd numbered elements will be misaligned - and hitting
an atomic64_add() on that element will cause the kernel to panic.
ip_set_elem_len() must return a size that is rounded to the maximum
alignment of any extension field stored in the element. This change
ensures that is the case.
Fixes: 95ad1f4a93 ("netfilter: ipset: Fix extension alignment")
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk >
Acked-by: Jozsef Kadlecsik <kadlec@netfilter.org >
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org >
Signed-off-by: Sasha Levin <sashal@kernel.org >
2020-06-30 15:37:01 -04:00
..
2020-06-30 15:37:01 -04:00
2020-01-04 19:18:58 +01:00
2019-07-04 02:29:49 +02:00
2019-09-26 08:56:17 +02:00
2019-09-13 11:39:38 +02:00
2019-05-21 10:50:45 +02:00
2019-06-19 17:09:55 +02:00
2019-07-16 13:16:59 +02:00
2019-07-16 13:16:59 +02:00
2020-06-03 08:21:38 +02:00
2019-09-13 12:33:06 +02:00
2019-09-13 12:33:06 +02:00
2019-05-30 11:26:32 -07:00
2019-09-02 11:20:17 -07:00
2019-07-16 13:17:00 +02:00
2019-07-16 13:16:59 +02:00
2019-06-19 17:09:52 +02:00
2019-09-13 12:33:06 +02:00
2019-07-16 13:16:59 +02:00
2019-08-27 18:07:03 +02:00
2019-05-30 11:26:32 -07:00
2020-01-12 12:21:13 +01:00
2020-06-03 08:21:39 +02:00
2020-01-14 20:08:39 +01:00
2019-06-19 17:09:55 +02:00
2019-07-16 13:17:00 +02:00
2019-07-16 13:17:00 +02:00
2019-09-13 12:33:06 +02:00
2020-02-05 21:22:52 +00:00
2019-08-13 12:08:48 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 14:18:18 -07:00
2019-07-16 13:16:59 +02:00
2019-05-31 18:02:45 +02:00
2019-07-16 13:16:59 +02:00
2019-05-30 11:26:32 -07:00
2020-03-18 07:17:49 +01:00
2019-07-16 13:16:59 +02:00
2019-09-13 12:33:06 +02:00
2019-05-24 17:37:51 +02:00
2019-09-10 22:44:29 +02:00
2019-10-23 13:14:50 +02:00
2019-05-21 10:50:45 +02:00
2020-04-01 11:02:09 +02:00
2019-04-12 01:47:39 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-07-04 02:29:48 +02:00
2019-07-16 13:16:59 +02:00
2019-09-13 12:33:06 +02:00
2019-07-16 13:16:59 +02:00
2019-06-22 08:59:24 -04:00
2019-07-16 13:16:59 +02:00
2019-04-11 20:59:34 +02:00
2020-05-14 07:58:29 +02:00
2019-06-22 08:59:24 -04:00
2019-07-16 13:16:59 +02:00
2019-07-16 13:16:59 +02:00
2020-01-09 10:20:03 +01:00
2020-03-18 07:17:49 +01:00
2020-04-23 10:36:19 +02:00
2019-07-05 21:34:47 +02:00
2020-02-05 21:22:52 +00:00
2019-04-30 13:35:26 +02:00
2019-06-19 17:09:55 +02:00
2019-05-24 17:37:51 +02:00
2020-06-03 08:21:35 +02:00
2019-05-24 17:37:51 +02:00
2019-08-26 11:06:07 +02:00
2020-05-14 07:58:29 +02:00
2019-08-13 12:08:48 +02:00
2020-01-29 16:45:33 +01:00
2020-01-12 12:21:18 +01:00
2019-08-26 11:01:00 +02:00
2019-07-19 18:08:14 +02:00
2020-03-18 07:17:58 +01:00
2019-04-08 23:01:42 +02:00
2020-01-12 12:21:18 +01:00
2019-06-19 17:09:55 +02:00
2019-10-01 18:42:15 +02:00
2019-06-19 17:09:55 +02:00
2019-07-16 13:16:59 +02:00
2019-09-10 22:44:29 +02:00
2019-08-27 17:27:08 +02:00
2019-06-25 01:32:59 +02:00
2019-06-19 17:09:55 +02:00
2019-09-03 22:53:56 +02:00
2019-06-19 17:09:55 +02:00
2020-01-17 19:48:19 +01:00
2020-04-01 11:02:18 +02:00
2019-07-16 13:17:03 +02:00
2019-08-13 12:10:01 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-09-20 10:20:02 +02:00
2019-06-21 22:23:35 -07:00
2020-01-17 19:48:33 +01:00
2020-06-22 09:31:00 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:37:15 +02:00
2020-01-29 16:45:29 +01:00
2020-03-18 07:17:57 +01:00
2019-06-19 17:09:55 +02:00
2019-09-03 19:05:00 +02:00
2020-01-12 12:21:18 +01:00
2019-07-16 13:17:00 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-08-13 12:15:44 +02:00
2019-08-27 17:27:08 +02:00
2020-05-20 08:20:25 +02:00
2019-09-02 23:20:59 +02:00
2019-09-10 22:35:37 +02:00
2020-01-09 10:19:54 +01:00
2020-03-18 07:17:57 +01:00
2019-06-19 17:09:55 +02:00
2019-06-28 19:30:50 +02:00
2020-03-18 07:17:50 +01:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 10:50:45 +02:00
2019-06-19 17:09:55 +02:00
2019-09-13 12:33:06 +02:00
2019-05-21 11:28:45 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-22 08:59:24 -04:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-03-21 08:11:46 +01:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-22 08:59:24 -04:00
2019-06-19 17:09:55 +02:00
2019-08-13 12:08:48 +02:00
2019-05-30 11:26:32 -07:00
2019-06-25 01:32:59 +02:00
2019-05-21 10:50:45 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:38 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-08-19 09:34:21 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 11:28:45 +02:00
2019-06-25 01:32:59 +02:00
2019-09-13 12:32:48 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 10:50:45 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-03-18 07:17:49 +01:00
2019-06-19 17:09:55 +02:00
2019-05-21 10:50:45 +02:00
2019-06-19 17:09:55 +02:00
2019-08-13 12:14:26 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-22 08:59:24 -04:00
2019-06-22 08:59:24 -04:00
2019-05-21 10:50:45 +02:00
2019-05-21 11:28:40 +02:00
2019-04-22 10:34:30 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 10:50:45 +02:00
2019-05-21 10:50:45 +02:00