[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CANn89iLCaPLhrGi5FyDppfzqdtsow2i6c5+E7pjtd47hwgvpGA@mail.gmail.com>
Date: Wed, 15 Dec 2021 02:38:48 -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: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()
> > 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