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 19975C282C2 for ; Thu, 7 Feb 2019 10:36:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DAFBA2147C for ; Thu, 7 Feb 2019 10:36:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="sRqnbxCE" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727070AbfBGKgv (ORCPT ); Thu, 7 Feb 2019 05:36:51 -0500 Received: from mail-pg1-f194.google.com ([209.85.215.194]:42413 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726565AbfBGKgu (ORCPT ); Thu, 7 Feb 2019 05:36:50 -0500 Received: by mail-pg1-f194.google.com with SMTP id d72so4305700pga.9 for ; Thu, 07 Feb 2019 02:36:49 -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=JIqlYr0OiakXf8C4Mv1noeir2Qdt4407YhI0qnYJMhw=; b=sRqnbxCEs2mmoisJvlAlBbqdYtbzb0sexrjiiRZ0RRL5N9dSGgtye1CAylbJqeCtS1 PfzFfM49URXUQAj2XW8xVYt8yxLN3DHUcq4YK2h9tzDmQPJAyxGWfQEqjcyrIyHaMrcB WWy1hqqnKo5cdkL4FDjt0tuuV7oPGeqT9OSMGaFSIE/9JvvkXDRMS87VuHyyJHTgKUBu yVyStYLX89EzwN+ZeS/JxnU3NeuvLT5HbBIQH432BW/zt2FRU0+LofKdSFPZAS6JmKS2 H2oeVtS51BM/F5fTtTidV9cfZjgKedWHIQiPaE1liF6VnnnM28rYCXNeGME2O2MZg141 CT/w== 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=JIqlYr0OiakXf8C4Mv1noeir2Qdt4407YhI0qnYJMhw=; b=CM2aSQpweBBMwJ++kla6KQmbuDeYU6GwY8L6yCoQLvDo5k7+FJSjHpasLOGIKOYoB2 YtJL2bDxqq8+LyUzGTD/cQOG7bRsVIxDF0d5mNwGSk+W3pqn1KOE9Fg+lRnjdc0Di1qD er0FAHOO+EoINOfD+hsLTIXLbGmjBhuZMUTZ/5OKxf5ao0Yf5lIHJSDliz+tUaQTk9IV zDBi+HnT8Y1ToK/Ivu+eLrXU2h8Evrt0cDqsAzpQKv3JvP9DSdrsN8SRBnaddFfEO8RW KHuKaC/e648cxrtAendYa42nW9ZvNnnhmwl+kJoCK2g5PGec3a3FZkc7lw7vEIvE2rvZ 9bzQ== X-Gm-Message-State: AHQUAuaH8oLD1Kn8JoKj/WSYDSsTXlpc+cim0uuUCbjDt6oX0vGfPqoS LzKvDhcPz0rBzaSs0grrN/tQOPV0djQ= X-Google-Smtp-Source: AHgI3Ibmpc7raglFnEzYeato3lAL16YwNaxulcokFUD4PaKslzHCIgpoaU/LGQ2uqUrxzDd80PxqxQ== X-Received: by 2002:a62:ea17:: with SMTP id t23mr7061508pfh.46.1549535809127; Thu, 07 Feb 2019 02:36:49 -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.46 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 07 Feb 2019 02:36:48 -0800 (PST) From: Hangbin Liu To: netdev@vger.kernel.org Cc: Stefano Brivio , David Miller , Eric Dumazet , Hangbin Liu , Oussama Ghorbel Subject: [PATCH v2 net 2/2] sit: check if IPv6 enabled before calling ip6_err_gen_icmpv6_unreach() Date: Thu, 7 Feb 2019 18:36:11 +0800 Message-Id: <20190207103611.25046-3-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 If we disabled IPv6 from the kernel command line (ipv6.disable=1), we should not call ip6_err_gen_icmpv6_unreach(). This: ip link add sit1 type sit local 192.0.2.1 remote 192.0.2.2 ttl 1 ip link set sit1 up ip addr add 198.51.100.1/24 dev sit1 ping 198.51.100.2 if IPv6 is disabled at boot time, will crash the kernel. v2: there's no need to use in6_dev_get(), use __in6_dev_get() instead, as we only need to check that idev exists and we are under rcu_read_lock() (from netif_receive_skb_internal()). Reported-by: Jianlin Shi Fixes: ca15a078bd90 ("sit: generate icmpv6 error when receiving icmpv4 error") Cc: Oussama Ghorbel Signed-off-by: Hangbin Liu Reviewed-by: Stefano Brivio --- net/ipv6/sit.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index 1e03305c0549..e8a1dabef803 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c @@ -546,7 +546,8 @@ static int ipip6_err(struct sk_buff *skb, u32 info) } err = 0; - if (!ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4, type, data_len)) + if (__in6_dev_get(skb->dev) && + !ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4, type, data_len)) goto out; if (t->parms.iph.daddr == 0) -- 2.19.2