From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nikolay Aleksandrov Subject: Re: [PATCH net-next v2] net: Initialize table in fib result Date: Wed, 16 Sep 2015 18:19:56 +0200 Message-ID: <55F996AC.1090305@cumulusnetworks.com> References: <1442420199-51715-1-git-send-email-dsa@cumulusnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Cc: sergey.senozhatsky.work@gmail.com, richard.alpe@ericsson.com, festevam@gmail.com To: David Ahern , netdev@vger.kernel.org Return-path: Received: from mail-wi0-f174.google.com ([209.85.212.174]:33520 "EHLO mail-wi0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751838AbbIPQT7 (ORCPT ); Wed, 16 Sep 2015 12:19:59 -0400 Received: by wiclk2 with SMTP id lk2so81050323wic.0 for ; Wed, 16 Sep 2015 09:19:58 -0700 (PDT) In-Reply-To: <1442420199-51715-1-git-send-email-dsa@cumulusnetworks.com> Sender: netdev-owner@vger.kernel.org List-ID: On 09/16/2015 06:16 PM, David Ahern wrote: > Sergey, Richard and Fabio reported an oops in ip_route_input_noref. e.g., from Richard: > > [ 0.877040] BUG: unable to handle kernel NULL pointer dereference at 0000000000000056 > [ 0.877597] IP: [] ip_route_input_noref+0x1a2/0xb00 > [ 0.877597] PGD 3fa14067 PUD 3fa6e067 PMD 0 > [ 0.877597] Oops: 0000 [#1] SMP > [ 0.877597] Modules linked in: virtio_net virtio_pci virtio_ring virtio > [ 0.877597] CPU: 1 PID: 119 Comm: ifconfig Not tainted 4.2.0+ #1 > [ 0.877597] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 > [ 0.877597] task: ffff88003fab0bc0 ti: ffff88003faa8000 task.ti: ffff88003faa8000 > [ 0.877597] RIP: 0010:[] [] ip_route_input_noref+0x1a2/0xb00 > [ 0.877597] RSP: 0018:ffff88003ed03ba0 EFLAGS: 00010202 > [ 0.877597] RAX: 0000000000000046 RBX: 00000000ffffff8f RCX: 0000000000000020 > [ 0.877597] RDX: ffff88003fab50b8 RSI: 0000000000000200 RDI: ffffffff8152b4b8 > [ 0.877597] RBP: ffff88003ed03c50 R08: 0000000000000000 R09: 0000000000000000 > [ 0.877597] R10: 0000000000000000 R11: 0000000000000000 R12: ffff88003fab6f00 > [ 0.877597] R13: ffff88003fab5000 R14: 0000000000000000 R15: ffffffff81cb5600 > [ 0.877597] FS: 00007f6de5751700(0000) GS:ffff88003ed00000(0000) knlGS:0000000000000000 > [ 0.877597] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [ 0.877597] CR2: 0000000000000056 CR3: 000000003fa6d000 CR4: 00000000000006e0 > [ 0.877597] Stack: > [ 0.877597] 0000000000000000 0000000000000046 ffff88003fffa600 ffff88003ed03be0 > [ 0.877597] ffff88003f9e2c00 697da8c0017da8c0 ffff880000000000 000000000007fd00 > [ 0.877597] 0000000000000000 0000000000000046 0000000000000000 0000000400000000 > [ 0.877597] Call Trace: > [ 0.877597] > [ 0.877597] [] ? cpumask_next_and+0x2f/0x40 > [ 0.877597] [] arp_process+0x39c/0x690 > [ 0.877597] [] arp_rcv+0x13e/0x170 > [ 0.877597] [] __netif_receive_skb_core+0x60c/0xa00 > [ 0.877597] [] ? __build_skb+0x25/0x100 > [ 0.877597] [] ? __build_skb+0x25/0x100 > [ 0.877597] [] __netif_receive_skb+0x16/0x70 > [ 0.877597] [] netif_receive_skb_internal+0x28/0x90 > [ 0.877597] [] napi_gro_receive+0x7f/0xd0 > [ 0.877597] [] virtnet_receive+0x256/0x910 [virtio_net] > [ 0.877597] [] virtnet_poll+0x18/0x80 [virtio_net] > [ 0.877597] [] net_rx_action+0x1dd/0x2f0 > [ 0.877597] [] __do_softirq+0x98/0x260 > [ 0.877597] [] do_softirq_own_stack+0x1c/0x30 > > The root cause is use of res.table uninitialized. > > Thanks to Nikolay for noticing the uninitialized use amongst the maze of > gotos. > > As Nikolay pointed out the second initialization is not required to fix > the oops, but rather to fix a related problem where a valid lookup should > be invalidated before creating the rth entry. > > Fixes: b7503e0cdb5d ("net: Add FIB table id to rtable") > Reported-by: Sergey Senozhatsky > Reported-by: Richard Alpe > Reported-by: Fabio Estevam > Tested-by: Fabio Estevam > Signed-off-by: David Ahern > --- > v2: > - clarification in the commit message regarding the second initialization > > net/ipv4/route.c | 2 ++ > 1 file changed, 2 insertions(+) > Thanks again! Signed-off-by: Nikolay Aleksandrov