From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Fastabend Subject: [bpf PATCH v2 0/4] sockhash/sockmap fixes Date: Thu, 05 Jul 2018 08:49:54 -0700 Message-ID: <20180705154828.17483.44366.stgit@john-Precision-Tower-5810> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, john.fastabend@gmail.com To: ast@kernel.org, daniel@iogearbox.net Return-path: Received: from [184.63.162.180] ([184.63.162.180]:39858 "EHLO john-Precision-Tower-5810" rhost-flags-FAIL-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1753264AbeGEPt6 (ORCPT ); Thu, 5 Jul 2018 11:49:58 -0400 Sender: netdev-owner@vger.kernel.org List-ID: First three patches resolve issues found while testing sockhash and reviewing code. Syzbot also found them about the same time as I was working on fixes. The main issue is in the sockhash path we reduced the scope of sk_callback lock but this meant we could get update and close running in parallel so fix that here. Then testing sk_msg and sk_skb programs together found that skb->dev is not always assigned and some of the helpers were depending on this to lookup max mtu. Fix this by using SKB_MAX_ALLOC when no MTU is available. Finally, Martin spotted that the sockmap code was still using the qdisc skb cb structure. But I was sure we had fixed this long ago. Looks like we missed it in a merge conflict resolution and then by chance data_end offset was the same in both structures so everything sort of continued to work even though it could break at any moment if the structs ever change. So redo the conversion and this time also convert the helpers. v2: fix '0 files changed' issue in patches --- John Fastabend (4): bpf: fix sk_skb programs without skb->dev assigned bpf: sockhash, disallow bpf_tcp_close and update in parallel bpf: sockmap, consume_skb in close path bpf: sockmap, convert bpf_compute_data_pointers to bpf_*_sk_skb include/net/tcp.h | 4 ++ kernel/bpf/sockmap.c | 24 ++++++++++-- kernel/bpf/syscall.c | 4 +- net/core/filter.c | 101 ++++++++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 121 insertions(+), 12 deletions(-)