[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CANn89iLzZaVObgj-OSG7bT2V8q2AdqUekc2aoiwG7QeRyemNLw@mail.gmail.com>
Date: Wed, 15 Dec 2021 02:41:01 -0800
From: Eric Dumazet <edumazet@...gle.com>
To: Jiri Slaby <jirislaby@...il.com>, Vlastimil Babka <vbabka@...e.cz>
Cc: Eric Dumazet <eric.dumazet@...il.com>,
"David S . Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
netdev <netdev@...r.kernel.org>,
Dmitry Vyukov <dvyukov@...gle.com>
Subject: Re: [PATCH v3 net-next 01/23] lib: add reference counting tracking infrastructure
On Wed, Dec 15, 2021 at 2:38 AM Eric Dumazet <edumazet@...gle.com> wrote:
>
> On Wed, Dec 15, 2021 at 2:18 AM Jiri Slaby <jirislaby@...il.com> wrote:
> >
> > On 05. 12. 21, 5:21, Eric Dumazet wrote:
> > > From: Eric Dumazet <edumazet@...gle.com>
> > >
> > > It can be hard to track where references are taken and released.
> > >
> > > In networking, we have annoying issues at device or netns dismantles,
> > > and we had various proposals to ease root causing them.
> > ...
> > > --- a/lib/Kconfig
> > > +++ b/lib/Kconfig
> > > @@ -680,6 +680,11 @@ config STACK_HASH_ORDER
> > > Select the hash size as a power of 2 for the stackdepot hash table.
> > > Choose a lower value to reduce the memory impact.
> > >
> > > +config REF_TRACKER
> > > + bool
> > > + depends on STACKTRACE_SUPPORT
> > > + select STACKDEPOT
> >
> > Hi,
> >
> > I have to:
> > + select STACKDEPOT_ALWAYS_INIT
> > here. Otherwise I see this during boot:
> >
>
> Thanks, I am adding Vlastimil Babka to the CC
>
> This stuff has been added in
> commit e88cc9f5e2e7a5d28a1adf12615840fab4cbebfd
> Author: Vlastimil Babka <vbabka@...e.cz>
> Date: Tue Dec 14 21:50:42 2021 +0000
>
> lib/stackdepot: allow optional init and stack_table allocation by kvmalloc()
>
>
(This is a problem because this patch is not yet in net-next, so I really do
not know how this issue should be handled)
>
> > > BUG: unable to handle page fault for address: 00000000001e6f80
> > > #PF: supervisor read access in kernel mode
> > > #PF: error_code(0x0000) - not-present page
> > > PGD 0 P4D 0
> > > Oops: 0000 [#1] PREEMPT SMP PTI
> > > CPU: 1 PID: 1 Comm: swapper/0 Tainted: G I 5.16.0-rc5-next-20211214-vanilla+ #46 2756e36611a8c8a8271884ae04571fc88e1cb566
> > > Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./To be filled by O.E.M., BIOS SDBLI944.86P 05/08/2007
> > > RIP: 0010:__stack_depot_save (lib/stackdepot.c:373)
> > > Code: 04 31 fb 83 fe 03 77 97 83 fe 02 74 7a 83 fe 03 74 72 83 fe 01 74 73 48 8b 05 45 ec 11 02 89 d9 81 e1 ff ff 0f 00 48 8d 0c c8 <48> 8b 29 48 85 ed 75 12 e9 9f 00 00 00 48 8b 6d 00 48 85 ed 0f 84
> > > All code
> > > ========
> > > 0: 04 31 add $0x31,%al
> > > 2: fb sti
> > > 3: 83 fe 03 cmp $0x3,%esi
> > > 6: 77 97 ja 0xffffffffffffff9f
> > > 8: 83 fe 02 cmp $0x2,%esi
> > > b: 74 7a je 0x87
> > > d: 83 fe 03 cmp $0x3,%esi
> > > 10: 74 72 je 0x84
> > > 12: 83 fe 01 cmp $0x1,%esi
> > > 15: 74 73 je 0x8a
> > > 17: 48 8b 05 45 ec 11 02 mov 0x211ec45(%rip),%rax # 0x211ec63
> > > 1e: 89 d9 mov %ebx,%ecx
> > > 20: 81 e1 ff ff 0f 00 and $0xfffff,%ecx
> > > 26: 48 8d 0c c8 lea (%rax,%rcx,8),%rcx
> > > 2a:* 48 8b 29 mov (%rcx),%rbp <-- trapping instruction
> > > 2d: 48 85 ed test %rbp,%rbp
> > > 30: 75 12 jne 0x44
> > > 32: e9 9f 00 00 00 jmp 0xd6
> > > 37: 48 8b 6d 00 mov 0x0(%rbp),%rbp
> > > 3b: 48 85 ed test %rbp,%rbp
> > > 3e: 0f .byte 0xf
> > > 3f: 84 .byte 0x84
> > >
> > > Code starting with the faulting instruction
> > > ===========================================
> > > 0: 48 8b 29 mov (%rcx),%rbp
> > > 3: 48 85 ed test %rbp,%rbp
> > > 6: 75 12 jne 0x1a
> > > 8: e9 9f 00 00 00 jmp 0xac
> > > d: 48 8b 6d 00 mov 0x0(%rbp),%rbp
> > > 11: 48 85 ed test %rbp,%rbp
> > > 14: 0f .byte 0xf
> > > 15: 84 .byte 0x84
> > > RSP: 0000:ffffb3f700027b78 EFLAGS: 00010206
> > > RAX: 0000000000000000 RBX: 000000004ea3cdf0 RCX: 00000000001e6f80
> > > RDX: 000000000000000d RSI: 0000000000000002 RDI: 00000000793ec676
> > > RBP: ffff8b578094f4d0 R08: 0000000043abc8c3 R09: 000000000000000d
> > > R10: 0000000000000015 R11: 000000000000001c R12: 0000000000000001
> > > R13: 0000000000000cc0 R14: ffffb3f700027bd8 R15: 000000000000000d
> > > FS: 0000000000000000(0000) GS:ffff8b5845c80000(0000) knlGS:0000000000000000
> > > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > > CR2: 00000000001e6f80 CR3: 0000000199410000 CR4: 00000000000006e0
> > > Call Trace:
> > > <TASK>
> > > ref_tracker_alloc (lib/ref_tracker.c:84)
> > > net_rx_queue_update_kobjects (net/core/net-sysfs.c:1049 net/core/net-sysfs.c:1101)
> > > netdev_register_kobject (net/core/net-sysfs.c:1761 net/core/net-sysfs.c:2012)
> > > register_netdevice (net/core/dev.c:9660)
> > > register_netdev (net/core/dev.c:9784)
> > > loopback_net_init (drivers/net/loopback.c:217)
> > > ops_init (net/core/net_namespace.c:140)
> > > register_pernet_operations (net/core/net_namespace.c:1148 net/core/net_namespace.c:1217)
> > > register_pernet_device (net/core/net_namespace.c:1304)
> > > net_dev_init (net/core/dev.c:11014)
> > > ? sysctl_core_init (net/core/dev.c:10958)
> > > do_one_initcall (init/main.c:1303)
> > > kernel_init_freeable (init/main.c:1377 init/main.c:1394 init/main.c:1413 init/main.c:1618)
> > > ? rest_init (init/main.c:1499)
> > > kernel_init (init/main.c:1509)
> > > ret_from_fork (arch/x86/entry/entry_64.S:301)
> > > </TASK>
> > > Modules linked in:
> > > CR2: 00000000001e6f80
> > > ---[ end trace 0000000000000000 ]---
> > > RIP: 0010:__stack_depot_save (lib/stackdepot.c:373)
> > > Code: 04 31 fb 83 fe 03 77 97 83 fe 02 74 7a 83 fe 03 74 72 83 fe 01 74 73 48 8b 05 45 ec 11 02 89 d9 81 e1 ff ff 0f 00 48 8d 0c c8 <48> 8b 29 48 85 ed 75 12 e9 9f 00 00 00 48 8b 6d 00 48 85 ed 0f 84
> > > All code
> > > ========
> > > 0: 04 31 add $0x31,%al
> > > 2: fb sti
> > > 3: 83 fe 03 cmp $0x3,%esi
> > > 6: 77 97 ja 0xffffffffffffff9f
> > > 8: 83 fe 02 cmp $0x2,%esi
> > > b: 74 7a je 0x87
> > > d: 83 fe 03 cmp $0x3,%esi
> > > 10: 74 72 je 0x84
> > > 12: 83 fe 01 cmp $0x1,%esi
> > > 15: 74 73 je 0x8a
> > > 17: 48 8b 05 45 ec 11 02 mov 0x211ec45(%rip),%rax # 0x211ec63
> > > 1e: 89 d9 mov %ebx,%ecx
> > > 20: 81 e1 ff ff 0f 00 and $0xfffff,%ecx
> > > 26: 48 8d 0c c8 lea (%rax,%rcx,8),%rcx
> > > 2a:* 48 8b 29 mov (%rcx),%rbp <-- trapping instruction
> > > 2d: 48 85 ed test %rbp,%rbp
> > > 30: 75 12 jne 0x44
> > > 32: e9 9f 00 00 00 jmp 0xd6
> > > 37: 48 8b 6d 00 mov 0x0(%rbp),%rbp
> > > 3b: 48 85 ed test %rbp,%rbp
> > > 3e: 0f .byte 0xf
> > > 3f: 84 .byte 0x84
> > >
> > > Code starting with the faulting instruction
> > > ===========================================
> > > 0: 48 8b 29 mov (%rcx),%rbp
> > > 3: 48 85 ed test %rbp,%rbp
> > > 6: 75 12 jne 0x1a
> > > 8: e9 9f 00 00 00 jmp 0xac
> > > d: 48 8b 6d 00 mov 0x0(%rbp),%rbp
> > > 11: 48 85 ed test %rbp,%rbp
> > > 14: 0f .byte 0xf
> > > 15: 84 .byte 0x84
> > > RSP: 0000:ffffb3f700027b78 EFLAGS: 00010206
> > > RAX: 0000000000000000 RBX: 000000004ea3cdf0 RCX: 00000000001e6f80
> > > RDX: 000000000000000d RSI: 0000000000000002 RDI: 00000000793ec676
> > > RBP: ffff8b578094f4d0 R08: 0000000043abc8c3 R09: 000000000000000d
> > > R10: 0000000000000015 R11: 000000000000001c R12: 0000000000000001
> > > R13: 0000000000000cc0 R14: ffffb3f700027bd8 R15: 000000000000000d
> > > FS: 0000000000000000(0000) GS:ffff8b5845c80000(0000) knlGS:0000000000000000
> > > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > > CR2: 00000000001e6f80 CR3: 0000000199410000 CR4: 00000000000006e0
> >
> > regards,
> > --
> > js
Powered by blists - more mailing lists