Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp583957rwb; Thu, 1 Dec 2022 06:05:40 -0800 (PST) X-Google-Smtp-Source: AA0mqf5vPYjG94LZDcQgyf80DBL9HEc/mCZACFiOPJJ3wk6YNfIvigOThnDZUlBcs+CakSW8ObnM X-Received: by 2002:a65:67c3:0:b0:477:96e2:beb8 with SMTP id b3-20020a6567c3000000b0047796e2beb8mr42723281pgs.151.1669903539897; Thu, 01 Dec 2022 06:05:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669903539; cv=none; d=google.com; s=arc-20160816; b=S92Aa+2J3JVc7GVjx4SGhcL344n4nwkl8r7DmdrxHe85B8kui0VHX2FqtQJwXwhLgI 8c2l3wvgFrg6YFVvBOADU2iqc3S6dLxpOmsF003h9k/IHUOW6EQPMku8SkuJlQGW8LX1 TubmA0d+P3koZEDpyFwa+Eu6/5oI6RGzUmhmOOoFU8TATglDrN+swiE8xG0awtFlsA+Z SBomjkU81teyOA6YM+hbupDkYvukebxcWeskNRF6uuwYv5FnAd5pq2rRWCi34Zodn1zP aWOuDgYFK284aT6R16V1t6407bFaGmDTCHd09xUwcEFWiDzEHWDg9USv2ylrt5yt6N3c EhPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=pZP7dd2L8s05nfl/eGQvgpf5n57IpEARrcYtHZqbzQU=; b=YBVr2MxwArrgnHkmOHvheIlzHCIHcFHeDC24nsVLc6s+rhNOv/eLn/WZ17DvMNL9LA 75fHQmBwg8+i9cNQZVHVof+eeSUC1Aq/xJEsJUDmUaQNPDjeWRipsK62TUVFmthyceKg CkkUzLDz3cP29AavusBV9LsUnU9O+iXDYhlxjNlvlYpd0n1R8uhb1S1BMSsNWlpZrlRu knsuaqjhyMtiNoEj9F8e12DJp0zHrWVhiZr8Jyq5OV0pCXJJyKOR5SasmZZfTYw7SmWw u6ChY7r/9YpTuoV9dDaOpjl1kRfLxYK4EwbYhVbkKOLiqOo4DZxG/CbBUwW7fhKkWUDh 0UAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@broadcom.com header.s=google header.b=baygwh7M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f27-20020aa7969b000000b005612b15a927si4426606pfk.181.2022.12.01.06.05.25; Thu, 01 Dec 2022 06:05:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@broadcom.com header.s=google header.b=baygwh7M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231235AbiLANQj (ORCPT + 82 others); Thu, 1 Dec 2022 08:16:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57718 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229631AbiLANQg (ORCPT ); Thu, 1 Dec 2022 08:16:36 -0500 Received: from mail-yb1-xb32.google.com (mail-yb1-xb32.google.com [IPv6:2607:f8b0:4864:20::b32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 340319E478 for ; Thu, 1 Dec 2022 05:16:34 -0800 (PST) Received: by mail-yb1-xb32.google.com with SMTP id j196so2001367ybj.2 for ; Thu, 01 Dec 2022 05:16:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=pZP7dd2L8s05nfl/eGQvgpf5n57IpEARrcYtHZqbzQU=; b=baygwh7MpvfYYrW1EkmDi8UA7WbwYyRRF+B4vXIKYqUikbMhkB9RU/xIMwyk2ePrLd 0xLQnXr4f7nSfmKFi4/jSWlfxM8qcESo89/BF0nNBn6R+/pw2UMF/bW60bncUjaMgtRy vyz2OnpXH55w/qyyqsQRi7d81ZIOVbmamSh6M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=pZP7dd2L8s05nfl/eGQvgpf5n57IpEARrcYtHZqbzQU=; b=C3ncPguyxD8K+Qwp8XIC1Jvr8eMuLnUqXWTM82d3SH5nM2z7ozPgg3kgDYvhcnkHTy M7ZABVMMsIynTKowarjNpBzcQbjz5vhzdYFXleIgiaR6fCJZeshWPQki01vNaOLxO2n1 GikHbHQCmwmwcToK9s+w3VsonYsVtfE4qOYOB/3VNw9zUB9vEQnkTk13K89hR31lra7M Mmt/dsbNt9rV7tV+NHHhRA8vRDcg/Gt0VcQpFzfBjvaX2neS1EIhBQ5f4i9ACqX8pwYj qMHjVLfi5GdAUj7wQYO0mhNBJPzkzbTQoA1Nzj56zIiyExRiD2YOsFz1Uhe9f8GVX8dL seyQ== X-Gm-Message-State: ANoB5pkMCBrD0+Tb9Tzi3HmxvG+jLxiVxWLwDwbl9FrUkOiaX/w3mUfH 3G1rSFwxU2E5sjHAxHHy2mNedVhDItnd7zJGxCWn3O2aeISMNQ== X-Received: by 2002:a25:9e8a:0:b0:6cc:54cb:71ff with SMTP id p10-20020a259e8a000000b006cc54cb71ffmr63212521ybq.339.1669900593228; Thu, 01 Dec 2022 05:16:33 -0800 (PST) MIME-Version: 1.0 References: <1669817512-4560-1-git-send-email-george.kennedy@oracle.com> In-Reply-To: <1669817512-4560-1-git-send-email-george.kennedy@oracle.com> From: Pavan Chebbi Date: Thu, 1 Dec 2022 18:46:22 +0530 Message-ID: Subject: Re: [PATCH] net: check for dev pointer being NULL in dev_hard_header() to avoid GPF To: George Kennedy Cc: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, harshit.m.mogalapalli@oracle.com Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="000000000000b184bd05eec407e4" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --000000000000b184bd05eec407e4 Content-Type: text/plain; charset="UTF-8" On Wed, Nov 30, 2022 at 7:43 PM George Kennedy wrote: > > The dev pointer can be NULL in dev_hard_header(). Add check for dev being > NULL in dev_hard_header() to avoid GPF. > > general protection fault, probably for non-canonical address > 0xdffffc0000000046: 0000 [#1] PREEMPT SMP KASAN NOPTI > KASAN: null-ptr-deref in range [0x0000000000000230-0x0000000000000237] > CPU: 1 PID: 45 Comm: kworker/1:1 Not tainted 6.1.0-rc7+ #2 > Hardware name: Red Hat KVM, BIOS 1.15.0-2.module+el8.6.0+20659+3dcf7c70 > Workqueue: mld mld_ifc_work > RIP: 0010:macvlan_hard_header (./include/linux/netdevice.h:3057 > (discriminator 4) drivers/net/macvlan.c:594 (discriminator 4)) > RSP: 0018:ffff888103d377d0 EFLAGS: 00010212 > RAX: dffffc0000000000 RBX: ffff88801cf1a000 RCX: 0000000000000000 > RDX: 0000000000000046 RSI: 0000000000000000 RDI: 0000000000000230 > RBP: ffff88801e8ef328 R08: 0000000000000000 R09: 0000000000000060 > R10: 0000000000000000 R11: 0000000000000000 R12: ffff88801f0497c0 > R13: 0000000000000000 R14: ffff888045187c98 R15: 0000000000000060 > FS: 0000000000000000(0000) GS:ffff888106c80000(0000) > knlGS:0000000000000000 > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > CR2: 00007fbf3f1c1840 CR3: 0000000014e36000 CR4: 00000000000006e0 > Call Trace: > > neigh_connected_output (./include/linux/netdevice.h:3060 > net/core/neighbour.c:1595) > ip6_finish_output2 (./include/net/neighbour.h:546 > net/ipv6/ip6_output.c:134) > ip6_finish_output (net/ipv6/ip6_output.c:195 net/ipv6/ip6_output.c:206) > ip6_output (./include/linux/netfilter.h:291 net/ipv6/ip6_output.c:227) > NF_HOOK.constprop.0 (./include/net/dst.h:445 > ./include/linux/netfilter.h:302) > mld_sendpack (net/ipv6/mcast.c:1824) > mld_send_cr (net/ipv6/mcast.c:2122) > mld_ifc_work (net/ipv6/mcast.c:2655) > process_one_work (kernel/workqueue.c:2294) > worker_thread (./include/linux/list.h:292 kernel/workqueue.c:2437) > kthread (kernel/kthread.c:376) > ret_from_fork (arch/x86/entry/entry_64.S:312) > > Modules linked in: > Dumping ftrace buffer: > (ftrace buffer empty) > ---[ end trace 0000000000000000 ]--- > > Fixes: 0c4e85813d0a ("[NET]: Wrap netdevice hardware header creation.") > Reported-by: syzkaller > Signed-off-by: George Kennedy > --- > include/linux/netdevice.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > index eddf8ee270e7..9b25a6301fa5 100644 > --- a/include/linux/netdevice.h > +++ b/include/linux/netdevice.h > @@ -3054,7 +3054,7 @@ static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev, > const void *daddr, const void *saddr, > unsigned int len) > { > - if (!dev->header_ops || !dev->header_ops->create) > + if (!dev || !dev->header_ops || !dev->header_ops->create) > return 0; net_device being NULL during eth header construction? seems like a more serious issue? If it indeed is a genuine scenario I think a better description is needed... > > return dev->header_ops->create(skb, dev, type, daddr, saddr, len); > -- > 2.31.1 > --000000000000b184bd05eec407e4 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 OltyqaGBuzv+bJTUL+bmV7E4QBLIqGt4jVr1R9hJdH6KxXwJdyfHZ9C6qXmoe2NQhiFUyBOJ0wgk dB9Z1IU7nCwvNKYg2JMoJs93tIgbhPJg/D7pqW8gabkCAwEAAaOCAdowggHWMA4GA1UdDwEB/wQE AwIFoDCBowYIKwYBBQUHAQEEgZYwgZMwTgYIKwYBBQUHMAKGQmh0dHA6Ly9zZWN1cmUuZ2xvYmFs c2lnbi5jb20vY2FjZXJ0L2dzZ2NjcjNwZXJzb25hbHNpZ24yY2EyMDIwLmNydDBBBggrBgEFBQcw AYY1aHR0cDovL29jc3AuZ2xvYmFsc2lnbi5jb20vZ3NnY2NyM3BlcnNvbmFsc2lnbjJjYTIwMjAw TQYDVR0gBEYwRDBCBgorBgEEAaAyASgKMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2Jh bHNpZ24uY29tL3JlcG9zaXRvcnkvMAkGA1UdEwQCMAAwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDov L2NybC5nbG9iYWxzaWduLmNvbS9nc2djY3IzcGVyc29uYWxzaWduMmNhMjAyMC5jcmwwJAYDVR0R BB0wG4EZcGF2YW4uY2hlYmJpQGJyb2FkY29tLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDBDAfBgNV HSMEGDAWgBSWM9HmWBdbNHWKgVZk1b5I3qGPzzAdBgNVHQ4EFgQUEV6y/89alKPoFbKUaJXsvWu5 fdowDQYJKoZIhvcNAQELBQADggEBAEHSIB6g652wVb+r2YCmfHW47Jo+5TuCBD99Hla8PYhaWGkd 9HIyD3NPhb6Vb6vtMWJW4MFGQF42xYRrAS4LZj072DuMotr79rI09pbOiWg0FlRRFt6R9vgUgebu pWSH7kmwVXcPtY94XSMMak4b7RSKig2mKbHDpD4bC7eGlwl5RxzYkgrHtMNRmHmQor5Nvqe52cFJ 25Azqtwvjt5nbrEd81iBmboNTEnLaKuxbbCtLaMEP8xKeDjAKnNOqHUMps0AsQT8c0EGq39YHpjp Wn1l67VU0rMShbEFsiUf9WYgE677oinpdm0t2mdCjxr35tryxptoTZXKHDxr/Yy6l6ExggJtMIIC aQIBATBrMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQD EyhHbG9iYWxTaWduIEdDQyBSMyBQZXJzb25hbFNpZ24gMiBDQSAyMDIwAgwV/XkICjVscn4SNZMw DQYJYIZIAWUDBAIBBQCggdQwLwYJKoZIhvcNAQkEMSIEICOxZVKDCs83BghAQJfrXQGrIdUo9dpx XVk7QLaGCPQKMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIyMTIw MTEzMTYzM1owaQYJKoZIhvcNAQkPMVwwWjALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCG SAFlAwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQowCwYJKoZIhvcNAQEHMAsGCWCGSAFlAwQC ATANBgkqhkiG9w0BAQEFAASCAQCdesEI6liHnREmarUKE5SjXxOkMxbTwhakhYSHs8PrfMKp7iya 35jm5PqaeME5DRmjpvugmFxJeNu/ob225f13G00Apc0jRm9PvhfwtH+NP4aLE+MkJf+AXB07ujyu u0KnRtt5Oz3mEaMDaCg1eqpg5w6VLz4BM4slQi1EFwqDkeSjll6OwbzGF41JAqfCnKHfihwUxJcg fbY8GzQ+2i78u6J683VF19CdJICTkgcNCCbBoHYL76EEZSvECcdoQztwHe7Q7Li12A5cqkUUdyEn 93smOZ72bya+E9n7gLM/lEhirEjQ0187xAo0atE0WXUFFX4n6rnYpv310w4DgjFB --000000000000b184bd05eec407e4--