From patchwork Fri Oct 12 21:50:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Stringer X-Patchwork-Id: 983319 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=wand.net.nz Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="hTxyVIbn"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42X1kD5pjYz9s7T for ; Sat, 13 Oct 2018 08:51:16 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725940AbeJMFZ1 (ORCPT ); Sat, 13 Oct 2018 01:25:27 -0400 Received: from mail-qt1-f195.google.com ([209.85.160.195]:41724 "EHLO mail-qt1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725765AbeJMFZ1 (ORCPT ); Sat, 13 Oct 2018 01:25:27 -0400 Received: by mail-qt1-f195.google.com with SMTP id l41-v6so15438339qtl.8 for ; Fri, 12 Oct 2018 14:51:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id; bh=V6K10OaaHKQ9sFqtYjNJmipiSwRei7R5IpJkFSCzxFE=; b=hTxyVIbn8BrLC393KxMTOcy9uCiknupHw6T311wyYwJTDr6yKj/a4npp1/eKSb572J ikABDzukUFadvNm1JIA9oPxUeoQly6pr4V7LoJtqaDP2JxanMNhym+lX33C9uyD6v/21 AoZwYho/xghFHjRQx4IHuF3k3LSaA4CIEDoFqSnA17YJul3OtZBPB30pI1IgyXDb89QQ fCd/aArPjNlhami/gULpM2X34XFP3+GriOgls10XyrChgrcYTrzNnLpBjk8WFHlwodf1 i1vmRRCHaCX9A3X/kTqEI+ttrIB7mSLBYVi3pDPXekAjQkCXRT8CKMqFUGoaFS5tIVls UCIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=V6K10OaaHKQ9sFqtYjNJmipiSwRei7R5IpJkFSCzxFE=; b=G0ZLb2mFo8yK9M1NIsU0TfX4SOAbrJ8Hn3SzSc+nkifWEtIEfitLDCH2Yxl/9aLRrU hWlA5qT6pP45hn0FoNOYd+LOZ2OUzTEqh4StacrhXUJlP3kUguSRSLA23K/nIonv8Kq5 quU0/WeWdoX0nBx3kgZhHaDqIywSZkT7Ssih26WcfMLW3j0r5mmcdc2h4ALZVYkAhpO0 PFC4PPgpWuZzdvIu9cwEd05hx33TqdeG4IoGGYamx7K8ZKurwvhsOkoI8pYWfJoflvRM dXaHimnydkQRSwwVf0Pb5cEi5F6trqcis00JnWvMJ1g9KFXnxuF+1U8IgzauyTN7PWeJ uqeg== X-Gm-Message-State: ABuFfohrytT4vBq8wpMK3GDGCNgUBap9DseZXvsHaa/KZ2TVUd4Vf93d TCskMgN3QzY2X7oIDXkZpb4= X-Google-Smtp-Source: ACcGV63ZXjZgw8iz3nvYRz1fIGZcnKKHGwvU+vjNje6e84m2nKOHY5qWr+OiP6OShRb8J4rRomT5OA== X-Received: by 2002:a0c:9a4d:: with SMTP id q13mr7549375qvd.89.1539381059974; Fri, 12 Oct 2018 14:50:59 -0700 (PDT) Received: from localhost.localdomain ([99.0.85.34]) by smtp.gmail.com with ESMTPSA id c34-v6sm1858918qkh.40.2018.10.12.14.50.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 12 Oct 2018 14:50:59 -0700 (PDT) From: Joe Stringer To: daniel@iogearbox.net Cc: netdev@vger.kernel.org, dan.carpenter@oracle.com, ast@kernel.org Subject: [PATCH bpf-next] bpf: Fix dev pointer dereference from sk_skb Date: Fri, 12 Oct 2018 14:50:53 -0700 Message-Id: <20181012215053.17830-1-joe@wand.net.nz> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Dan Carpenter reports: The patch 6acc9b432e67: "bpf: Add helper to retrieve socket in BPF" from Oct 2, 2018, leads to the following Smatch complaint: net/core/filter.c:4893 bpf_sk_lookup() error: we previously assumed 'skb->dev' could be null (see line 4885) Fix this issue by checking skb->dev before using it. Signed-off-by: Joe Stringer --- net/core/filter.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/core/filter.c b/net/core/filter.c index 4bbc6567fcb8..b844761b5d4c 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -4821,9 +4821,12 @@ static const struct bpf_func_proto bpf_lwt_seg6_adjust_srh_proto = { static struct sock *sk_lookup(struct net *net, struct bpf_sock_tuple *tuple, struct sk_buff *skb, u8 family, u8 proto) { - int dif = skb->dev->ifindex; bool refcounted = false; struct sock *sk = NULL; + int dif = 0; + + if (skb->dev) + dif = skb->dev->ifindex; if (family == AF_INET) { __be32 src4 = tuple->ipv4.saddr;