From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8FD51C282C4 for ; Thu, 7 Feb 2019 10:36:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 543332147C for ; Thu, 7 Feb 2019 10:36:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YVicIxrB" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727059AbfBGKgs (ORCPT ); Thu, 7 Feb 2019 05:36:48 -0500 Received: from mail-pf1-f193.google.com ([209.85.210.193]:37218 "EHLO mail-pf1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726565AbfBGKgr (ORCPT ); Thu, 7 Feb 2019 05:36:47 -0500 Received: by mail-pf1-f193.google.com with SMTP id y126so4585545pfb.4 for ; Thu, 07 Feb 2019 02:36:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QSzukfE2AOVMlHZbGCSPkxk2EaHX9swjD1ZJwLq+vi0=; b=YVicIxrBY280GDFls3gmT/FSS3Dro8ebDdWLjD87tM2WT0lbdlbiD7GcfPzPc3OAcw OZgxHJOp/8l58mC2CZ66ZKH5rl1VIc90hkTSYE6E0gSV3gaDHpbAnk0fWQyA9o38Oc7A +uHwFMLGw6GHHcacoD/IZixRThVGtHLaomiO8DddFRshsWYCwF+a6ONnBF5QlWbEhO1C xN9NUrPBYqhbcllBRZd66VssTgnmG9WbiYg4h34YG9rwfyv8ERvg7eAS4wpushsMOTGQ ElmrEKX0t4AjEHfsv753Ct5BPNfHqomey4pTgL954I3qzaFfZ3RwahtR58b0RUqXUkLp N8mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QSzukfE2AOVMlHZbGCSPkxk2EaHX9swjD1ZJwLq+vi0=; b=HsawZmgp6SzPAPMlkcNExtnBTWzicyqkCxksepaLmGkc2PF9Yc1BguAo8d9jUvS9Vz 350cFNOrYkljunSZTGAwcSjqYLKGhxcfXpMd0TZKhxK6F0HW0O8QkOckHQBPBYwqgv/T HDWK/+CLZP4BI+AwWW+WsQhpSIc6uUVvwjs2LfLLFZAlmLARfAPI0FC81zEFtnc0hSmU oOOUqWxAFr1ZZLLI5uWejnpAzu7/t+WogsiY7F23QfLWr5FRElgWcrrERL8m0ZGORqzu KRjTXueei70ITOahfIE70P2gQWCup7X5dSgSKYZerxVUZTR/JmH4dJyOz2MPv2OImceT FI7A== X-Gm-Message-State: AHQUAubWvE/l6yzC91sIhf6bKTti6Dk54Heo2Dt3mYqgT/qVzzkgU0lH HN+f60L6LQK5aRIWvu33eOBWfuZU4jo= X-Google-Smtp-Source: AHgI3Iadu9qbpnWIjPJnwH3rfx9in5bia/LqyCoGcSbzsIVT4fm/50ua0ZhTHCN+GfsIH2DfDscH7g== X-Received: by 2002:a63:730c:: with SMTP id o12mr4569020pgc.270.1549535806456; Thu, 07 Feb 2019 02:36:46 -0800 (PST) Received: from dhcp-12-139.nay.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id k64sm7490703pfj.69.2019.02.07.02.36.44 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 07 Feb 2019 02:36:46 -0800 (PST) From: Hangbin Liu To: netdev@vger.kernel.org Cc: Stefano Brivio , David Miller , Eric Dumazet , Hangbin Liu , Alexey Kodanev Subject: [PATCH v2 net 1/2] geneve: should not call rt6_lookup() when ipv6 was disabled Date: Thu, 7 Feb 2019 18:36:10 +0800 Message-Id: <20190207103611.25046-2-liuhangbin@gmail.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190207103611.25046-1-liuhangbin@gmail.com> References: <20190206125111.5286-1-liuhangbin@gmail.com> <20190207103611.25046-1-liuhangbin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When we add a new GENEVE device with IPv6 remote, checking only for IS_ENABLED(CONFIG_IPV6) is not enough as we may disable IPv6 in the kernel command line (ipv6.disable=1), and calling rt6_lookup() would cause a NULL pointer dereference. v2: - don't mix declarations and code (reported by Stefano Brivio, Eric Dumazet) - there's no need to use in6_dev_get() as we only need to check that idev exists (reported by David Ahern). This is under RTNL, so we can simply use __in6_dev_get() instead (Stefano, Eric). Reported-by: Jianlin Shi Fixes: c40e89fd358e9 ("geneve: configure MTU based on a lower device") Cc: Alexey Kodanev Signed-off-by: Hangbin Liu Reviewed-by: Stefano Brivio --- drivers/net/geneve.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c index 58bbba8582b0..3377ac66a347 100644 --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c @@ -1512,9 +1512,13 @@ static void geneve_link_config(struct net_device *dev, } #if IS_ENABLED(CONFIG_IPV6) case AF_INET6: { - struct rt6_info *rt = rt6_lookup(geneve->net, - &info->key.u.ipv6.dst, NULL, 0, - NULL, 0); + struct rt6_info *rt; + + if (!__in6_dev_get(dev)) + break; + + rt = rt6_lookup(geneve->net, &info->key.u.ipv6.dst, NULL, 0, + NULL, 0); if (rt && rt->dst.dev) ldev_mtu = rt->dst.dev->mtu - GENEVE_IPV6_HLEN; -- 2.19.2