lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 21 Apr 2022 15:06:39 -0700 From: Peilin Ye <yepeilin.cs@...il.com> To: "David S. Miller" <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>, Hideaki YOSHIFUJI <yoshfuji@...ux-ipv6.org>, David Ahern <dsahern@...nel.org>, Paolo Abeni <pabeni@...hat.com> Cc: Peilin Ye <peilin.ye@...edance.com>, "xeb@...l.ru" <xeb@...l.ru>, William Tu <u9012063@...il.com>, Daniel Borkmann <daniel@...earbox.net>, Cong Wang <cong.wang@...edance.com>, Eric Dumazet <eric.dumazet@...il.com>, Alexei Starovoitov <ast@...nel.org>, Andrii Nakryiko <andrii@...nel.org>, Martin KaFai Lau <kafai@...com>, Song Liu <songliubraving@...com>, Yonghong Song <yhs@...com>, John Fastabend <john.fastabend@...il.com>, KP Singh <kpsingh@...nel.org>, netdev@...r.kernel.org, bpf@...r.kernel.org, linux-kernel@...r.kernel.org, Peilin Ye <yepeilin.cs@...il.com> Subject: [PATCH net 0/3] ip_gre, ip6_gre: o_seqno fixes From: Peilin Ye <peilin.ye@...edance.com> Hi all, As pointed out [1] by Jakub Kicinski, currently using TUNNEL_SEQ in collect_md mode is racy for [IP6]GRE[TAP] devices, since they (typically, e.g. if created using "ip") use lockless TX. Patch [3/3] fixes it by making o_seqno atomic_t. As mentioned by Eric Dumazet in commit b790e01aee74 ("ip_gre: lockless xmit"), making o_seqno atomic_t increases "chance for packets being out of order at receiver" when using lockless TX. Another way to fix it would be: users must specify "external" and "oseq" at the same time if they want the kernel to allow using TUNNEL_SEQ (e.g. via eBPF) in collect_md mode, but that would break userspace. I found another issue while reading the code: patches [1,2/3] make o_seqno start from 0 in native mode, as described in RFC 2890 [2] section 2.2.: "The first datagram is sent with a sequence number of 0." Now we could make [IP6]GRE[TAP] (and probably [IP6]ERSPAN ?) devices completely NETIF_F_LLTX, but that's out of scope of this fix and will be sent as separate [net-next] patches. [1] https://lore.kernel.org/netdev/20220415191133.0597a79a@kernel.org/ [2] https://datatracker.ietf.org/doc/html/rfc2890#section-2.2 Thanks, Peilin Ye (3): ip_gre: Make o_seqno start from 0 in native mode ip6_gre: Make o_seqno start from 0 in native mode ip_gre, ip6_gre: Fix race condition on o_seqno in collect_md mode include/net/ip6_tunnel.h | 2 +- include/net/ip_tunnels.h | 2 +- net/ipv4/ip_gre.c | 12 +++++------- net/ipv6/ip6_gre.c | 16 ++++++++-------- 4 files changed, 15 insertions(+), 17 deletions(-) -- 2.20.1
Powered by blists - more mailing lists