Files
i2som-imx-linux/include/uapi/linux
Shmulik Ladkani 98589a0998 netfilter: xt_bpf: Fix XT_BPF_MODE_FD_PINNED mode of 'xt_bpf_info_v1'
Commit 2c16d60332 ("netfilter: xt_bpf: support ebpf") introduced
support for attaching an eBPF object by an fd, with the
'bpf_mt_check_v1' ABI expecting the '.fd' to be specified upon each
IPT_SO_SET_REPLACE call.

However this breaks subsequent iptables calls:

 # iptables -A INPUT -m bpf --object-pinned /sys/fs/bpf/xxx -j ACCEPT
 # iptables -A INPUT -s 5.6.7.8 -j ACCEPT
 iptables: Invalid argument. Run `dmesg' for more information.

That's because iptables works by loading existing rules using
IPT_SO_GET_ENTRIES to userspace, then issuing IPT_SO_SET_REPLACE with
the replacement set.

However, the loaded 'xt_bpf_info_v1' has an arbitrary '.fd' number
(from the initial "iptables -m bpf" invocation) - so when 2nd invocation
occurs, userspace passes a bogus fd number, which leads to
'bpf_mt_check_v1' to fail.

One suggested solution [1] was to hack iptables userspace, to perform a
"entries fixup" immediatley after IPT_SO_GET_ENTRIES, by opening a new,
process-local fd per every 'xt_bpf_info_v1' entry seen.

However, in [2] both Pablo Neira Ayuso and Willem de Bruijn suggested to
depricate the xt_bpf_info_v1 ABI dealing with pinned ebpf objects.

This fix changes the XT_BPF_MODE_FD_PINNED behavior to ignore the given
'.fd' and instead perform an in-kernel lookup for the bpf object given
the provided '.path'.

It also defines an alias for the XT_BPF_MODE_FD_PINNED mode, named
XT_BPF_MODE_PATH_PINNED, to better reflect the fact that the user is
expected to provide the path of the pinned object.

Existing XT_BPF_MODE_FD_ELF behavior (non-pinned fd mode) is preserved.

References: [1] https://marc.info/?l=netfilter-devel&m=150564724607440&w=2
            [2] https://marc.info/?l=netfilter-devel&m=150575727129880&w=2

Reported-by: Rafael Buchbinder <rafi@rbk.ms>
Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Acked-by: Willem de Bruijn <willemb@google.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
2017-10-09 15:18:04 +02:00
..
2017-08-31 17:32:38 -04:00
2016-10-18 10:05:42 -06:00
2017-08-15 09:02:09 -07:00
2017-08-20 08:14:03 -04:00
2017-08-31 14:42:19 -07:00
2017-08-03 21:37:29 -07:00
2017-08-31 17:32:38 -04:00
2016-10-01 07:32:32 +02:00
2017-03-25 20:11:19 -07:00
2017-06-23 13:42:20 -04:00
2017-02-03 15:16:45 -05:00
2016-11-03 15:41:11 -04:00
2016-11-03 15:41:11 -04:00
2016-06-27 16:31:25 +01:00
2017-07-06 16:24:30 -07:00
2017-08-08 06:03:15 -04:00
2017-01-17 14:38:43 -05:00
2017-05-30 08:20:25 -06:00
2017-02-20 11:13:37 -05:00
2017-09-07 13:24:16 -05:00
2016-09-27 21:52:00 -04:00
2016-09-27 21:52:00 -04:00
2017-07-01 15:26:11 -07:00
2017-01-09 16:07:38 -05:00
2017-08-04 10:30:27 +02:00
2017-01-10 18:31:55 -08:00
2017-06-15 12:12:40 -04:00
2017-06-05 16:58:59 +02:00
2017-03-31 12:55:06 +02:00
2016-12-16 00:13:38 +02:00
2016-12-16 00:13:32 +02:00
2017-04-24 12:35:56 -04:00