< Linux Kernel > Notification Chain

本文深入解析了通知链机制,介绍了其基本概念、不同类型的分类、结构体定义及使用方法,并通过inetaddr_chain通知链实例展示了如何实现注册与事件通知。
A notification chain is simply a list of functions to execute when a given event occurs. Each function lets one
other subsystem know about an event that occurred within, or was detected by, the subsystem calling the

function.


Thus, for each notification chain there is a passive side (the notified) and an active side (the notifier), as in the

so-called publish-and-subscribe model:


• The notified are the subsystems that ask to be notified about the event and that provide a callback

function to invoke.


• The notifier is the subsystem that experiences an event and calls the callback function.


The functions executed are chosen by the notified subsystems. It is never up to the owner of the chain (the

subsystem that generates the notifications) to decide what functions to execute. The owner simply defines the

list; any kernel subsystem can register a callback function with that chain to receive the notification.


Notification Chain 首先是一个链表,类型如下:

struct notifier_block {
	int (*notifier_call)(struct notifier_block *, unsigned long, void *);
	struct notifier_block __rcu *next;
	int priority;
};

Notification Chain 的分类:

/*
 * Notifier chains are of four types:
 *
 *	Atomic notifier chains: Chain callbacks run in interrupt/atomic
 *		context. Callouts are not allowed to block.
 *	Blocking notifier chains: Chain callbacks run in process context.
 *		Callouts are allowed to block.
 *	Raw notifier chains: There are no restrictions on callbacks,
 *		registration, or unregistration.  All locking and protection
 *		must be provided by the caller.
 *	SRCU notifier chains: A variant of blocking notifier chains, with
 *		the same restrictions.
 *
 * atomic_notifier_chain_register() may be called from an atomic context,
 * but blocking_notifier_chain_register() and srcu_notifier_chain_register()
 * must be called from a process context.  Ditto for the corresponding
 * _unregister() routines.
 *
 * atomic_notifier_chain_unregister(), blocking_notifier_chain_unregister(),
 * and srcu_notifier_chain_unregister() _must not_ be called from within
 * the call chain.
 *
 * SRCU notifier chains are an alternative form of blocking notifier chains.
 * They use SRCU (Sleepable Read-Copy Update) instead of rw-semaphores for
 * protection of the chain links.  This means there is _very_ low overhead
 * in srcu_notifier_call_chain(): no cache bounces and no memory barriers.
 * As compensation, srcu_notifier_chain_unregister() is rather expensive.
 * SRCU notifier chains should be used when the chain will be called very
 * often but notifier_blocks will seldom be removed.  Also, SRCU notifier
 * chains are slightly more difficult to use because they require special
 * runtime initialization.
 */

下面就 inetaddr_chain 通知链举例说明使用方法,

1) 定义

static BLOCKING_NOTIFIER_HEAD(inetaddr_chain);

#define BLOCKING_NOTIFIER_HEAD(name)				\
	struct blocking_notifier_head name =			\
		BLOCKING_NOTIFIER_INIT(name)

#define BLOCKING_NOTIFIER_INIT(name) {				\
		.rwsem = __RWSEM_INITIALIZER((name).rwsem),	\
		.head = NULL }

2)Register & Unregister API

int register_inetaddr_notifier(struct notifier_block *nb)
{
	return blocking_notifier_chain_register(&inetaddr_chain, nb);
}
EXPORT_SYMBOL(register_inetaddr_notifier);

int unregister_inetaddr_notifier(struct notifier_block *nb)
{
	return blocking_notifier_chain_unregister(&inetaddr_chain, nb);
}

3)inetaddr_chain 通知链 注册


---- register_inetaddr_notifier Matches (13 in 12 files) ----
Clip.c (net\atm):    register_inetaddr_notifier(&clip_inet_notifier);
Devinet.c (net\ipv4):int register_inetaddr_notifier(struct notifier_block *nb)
Devinet.c (net\ipv4):EXPORT_SYMBOL(register_inetaddr_notifier);
Fib_frontend.c (net\ipv4):    register_inetaddr_notifier(&fib_inetaddr_notifier);
Inetdevice.h (include\linux):extern int register_inetaddr_notifier(struct notifier_block *nb);
ipt_MASQUERADE.c (net\ipv4\netfilter):        register_inetaddr_notifier(&masq_inet_notifier);
Main.c (net\mac80211):    result = register_inetaddr_notifier(&local->ifa_notifier);
Nes.c (drivers\infiniband\hw\nes):        register_inetaddr_notifier(&nes_inetaddr_notifier);
Netxen_nic_main.c (drivers\net\ethernet\qlogic\netxen):    register_inetaddr_notifier(&netxen_inetaddr_cb);
Protocol.c (net\sctp):    register_inetaddr_notifier(&sctp_inetaddr_notifier);
Qeth_l3_main.c (drivers\s390\net):    rc = register_inetaddr_notifier(&qeth_l3_ip_notifier);
Qlcnic_main.c (drivers\net\ethernet\qlogic\qlcnic):    register_inetaddr_notifier(&qlcnic_inetaddr_cb);
Via-velocity.c (drivers\net\ethernet\via):    register_inetaddr_notifier(&velocity_inetaddr_notifier);

void __init ip_fib_init(void)
{
	rtnl_register(PF_INET, RTM_NEWROUTE, inet_rtm_newroute, NULL, NULL);
	rtnl_register(PF_INET, RTM_DELROUTE, inet_rtm_delroute, NULL, NULL);
	rtnl_register(PF_INET, RTM_GETROUTE, NULL, inet_dump_fib, NULL);

	register_pernet_subsys(&fib_net_ops);
	register_netdevice_notifier(&fib_netdev_notifier);
	register_inetaddr_notifier(&fib_inetaddr_notifier);

	fib_trie_init();
}

以 ip_fib_init() 为例,在此向 inetaddr_chain 通知链 注册(请求在发生event 的时候调用自己的Callback),

static struct notifier_block fib_inetaddr_notifier = {
    .notifier_call = fib_inetaddr_event,
};

之前提到了 struct notifier_block 结构体的类型,这个结构体类型有 priority,也就是优先级,注册到通知链如果不指定优先级的话,采取先注册先调用的原则,优先级高的链表元素插入在链表的前面,这样最终在通知链调用 callback 的时候直接从链表头遍历就行了。

这里注册的callback是

static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, void *ptr)


4)inetaddr_chain 通知链 事件通知

接下来当发生 ipaddr 变化相关的操作时就会调用通知链通知的函数

如,

static int __inet_insert_ifa(struct in_ifaddr *ifa, struct nlmsghdr *nlh,
			     u32 pid)
{
	struct in_device *in_dev = ifa->ifa_dev;
	struct in_ifaddr *ifa1, **ifap, **last_primary;

	/* Send message first, then call notifier.
	   Notifier will trigger FIB update, so that
	   listeners of netlink will know about new ifaddr */
	rtmsg_ifa(RTM_NEWADDR, ifa, nlh, pid);
	blocking_notifier_call_chain(&inetaddr_chain, NETDEV_UP, ifa);

总结, 通知链的分析从定义,内核子系统注册,通知,都是围绕 当前通知链 链表 + 通知链链表元素 进行,因此search 通知链链表就会一目了然,分析具体的元素就知道需要做什么事情了。



[MESH][DEBUG](mesh_handle_indicateChild) 01475: [00:ff:00:16:f8:6c] is new isolated entry [ 240.820000] Kernel bug detected[#1]: [ 240.828000] CPU: 3 PID: 110 Comm: kworker/3:1 Tainted: P W O 3.10.108 #25 [ 240.840000] Workqueue: events wireless_nlevent_process [ 240.852000] task: 87dea4a8 ti: 87d1c000 task.ti: 87d1c000 [ 240.864000] $ 0 : 00000000 00000000 00000014 00000014 [ 240.872000] $ 4 : 00000001 87cb88b8 87cbdc84 87cbdc80 [ 240.884000] $ 8 : 87cbdc8c 87cbdc94 00000001 816e0000 [ 240.892000] $12 : 000000c0 00000300 00000001 00000000 [ 240.904000] $16 : 85197000 00000011 87cb8800 87c06b00 [ 240.916000] $20 : 000000d0 00000000 8519701c ffffffff [ 240.924000] $24 : 00000010 810103f8 [ 240.936000] $28 : 87d1c000 87d1dcc8 81980000 810c1740 [ 240.944000] Hi : 00000000 [ 240.952000] Lo : 00000400 [ 240.956000] epc : 810c17b4 cache_alloc_refill+0x100/0x804 [ 240.968000] Tainted: P W O [ 240.976000] ra : 810c1740 cache_alloc_refill+0x8c/0x804 [ 240.988000] Status: 1100fc02 KERNEL EXL [ 240.996000] Cause : 50800034 [ 241.000000] PrId : 0001992f (MIPS 1004Kc) [ 241.008000] Modules linked in: mt7603e_wifi(O) tp_trust_key(O) urlfilter(PO) hw_nat(O) tp_mdns(O) mesh(O) rate_limit(PO) gpio(O) dhcp_capture(O) tp_domain(O) vlan_manage(O) portal(O) tls_tuple_lib(O) ts_kmp(O) ebt_vlan(O) ebtables(O) ebt_log(O) ebt_limit(O) ebt_ip(O) xt_REDIRECT(O) ipt_REJECT(O) ipt_MASQUERADE(O) iptable_nat(O) iptable_filter(O) nf_nat_ipv4(O) nf_nat_proto_gre(O) nf_nat(O) nf_conntrack_ipv4(O) nf_defrag_ipv4(O) xt_state(O) xt_conntrack(O) nf_conntrack_h323(O) nf_conntrack(O) ip_tables(O) xt_time(O) xt_string(O) xt_multiport(O) xt_mac(O) xt_iprange(O) xt_comment(O) xt_TCPMSS(O) xt_mark(O) xt_tcpudp(O) x_tables(O) mtdoops(O) [ 241.120000] Process kworker/3:1 (pid: 110, threadinfo=87d1c000, task=87dea4a8, tls=00000000) [ 241.140000] Stack : 00000000 000000d0 00000140 814ae830 86efb580 00000074 000000c3 00000001 8671dc30 87cbdc80 84ad88c0 00000001 87c06b00 000000d0 84744630 816dee40 81980000 84744600 00000000 810c1674 8671dc00 00000000 00000000 814a71a0 00000001 84ad88c0 000000d0 00000000 00000000 814ac59c 00002e7b 00000000 ffffffff 81980000 87cb8600 00000000 87cb8600 814dc860 00000000 00000003 ... [ 241.208000] Call Trace: [ 241.212000] [<810c17b4>] cache_alloc_refill+0x100/0x804 [ 241.224000] [<810c1674>] kmem_cache_alloc+0xd0/0x110 [ 241.236000] [<814ac59c>] skb_clone+0x60/0x130 [ 241.244000] [<814dc860>] netlink_broadcast_filtered+0x2fc/0x580 [ 241.256000] [<814dcb04>] netlink_broadcast+0x20/0x2c [ 241.264000] [<814df888>] nlmsg_notify+0x80/0x15c [ 241.272000] [<815a90d0>] wireless_nlevent_flush+0x50/0xb8 [ 241.284000] [<815a9204>] wireless_nlevent_process+0x18/0x24 [ 241.296000] [<81047200>] process_one_work+0x13c/0x434 [ 241.304000] [<81047d24>] worker_thread+0x170/0x4dc [ 241.316000] [<8104e140>] kthread+0xb8/0xc0 [ 241.324000] [<810060f8>] ret_from_kernel_thread+0x14/0x1c [ 241.332000] [ 241.336000] Code: 8e630018 0043202b 38840001 <00040336> 0043182b 10600023 00000000 12200058 2623ffff [ 241.360000] ---[ end trace 896ccfcdf9aadafe ]--- [ 241.368000] CPU 3 Unable to handle kernel paging request at virtual address 00000078, epc == 814b9b90, ra == 814bd4f8 [ 241.388000] Oops[#2]: [ 241.392000] CPU: 3 PID: 110 Comm: kworker/3:1 Tainted: P D W O 3.10.108 #25 [ 241.408000] Workqueue: events wireless_nlevent_process [ 241.420000] task: 87dea4a8 ti: 87d1c000 task.ti: 87d1c000 [ 241.428000] $ 0 : 00000000 87d88895 00000000 00000000 [ 241.440000] $ 4 : 85197380 00000000 ffffc6be 00000020 [ 241.448000] $ 8 : 002f0000 c0a0cfce 00000010 43420000 [ 241.460000] $12 : 50000001 00253000 00000000 000104f2 [ 241.472000] $16 : 81aa0838 00000000 81aa07d4 818457e4 [ 241.480000] $20 : 81aa0834 81aa0828 00000200 85197380 [ 241.492000] $24 : 00000010 813ee3e4 [ 241.500000] $28 : 87d1c000 87d1d870 81aa07c8 814bd4f8 [ 241.512000] Hi : 000000f2 [ 241.520000] Lo : 00000000 [ 241.524000] epc : 814b9b90 __netif_receive_skb_core+0x70/0x82c [ 241.536000] Tainted: P D W O [ 241.544000] ra : 814bd4f8 process_backlog+0xb8/0x1c0 [ 241.552000] Status: 1100fc03 KERNEL EXL IE [ 241.560000] Cause : 40800008 [ 241.568000] BadVA : 00000078 [ 241.572000] PrId : 0001992f (MIPS 1004Kc) [ 241.580000] Modules linked in: mt7603e_wifi(O) tp_trust_key(O) urlfilter(PO) hw_nat(O) tp_mdns(O) mesh(O) rate_limit(PO) gpio(O) dhcp_capture(O) tp_domain(O) vlan_manage(O) portal(O) tls_tuple_lib(O) ts_kmp(O) ebt_vlan(O) ebtables(O) ebt_log(O) ebt_limit(O) ebt_ip(O) xt_REDIRECT(O) ipt_REJECT(O) ipt_MASQUERADE(O) iptable_nat(O) iptable_filter(O) nf_nat_ipv4(O) nf_nat_proto_gre(O) nf_nat(O) nf_conntrack_ipv4(O) nf_defrag_ipv4(O) xt_state(O) xt_conntrack(O) nf_conntrack_h323(O) nf_conntrack(O) ip_tables(O) xt_time(O) xt_string(O) xt_multiport(O) xt_mac(O) xt_iprange(O) xt_comment(O) xt_TCPMSS(O) xt_mark(O) xt_tcpudp(O) x_tables(O) mtdoops(O) [ 241.696000] Process kworker/3:1 (pid: 110, threadinfo=87d1c000, task=87dea4a8, tls=00000000) [ 241.712000] Stack : 00000000 00000000 00000000 00000000 00000000 00000000 87dea4a8 00000000 00000000 87d1d890 00000000 00000003 81aa0838 00000000 81aa07d4 00000001 81aa0834 81aa0828 00000200 00000100 81aa07c8 814bd4f8 85197380 00000001 81707600 816df35c 816df35c 81aa0838 00000040 0000012c 81aa07c0 81810000 ffffc6c0 816ad95c 816d0000 814bd344 81954f80 810328ac 0000003f 816d56c0 ... [ 241.780000] Call Trace: [ 241.788000] [<814b9b90>] __netif_receive_skb_core+0x70/0x82c [ 241.800000] [<814bd4f8>] process_backlog+0xb8/0x1c0 [ 241.808000] [<814bd344>] net_rx_action+0xec/0x1e8 [ 241.816000] [<81032ddc>] __do_softirq+0x128/0x230 [ 241.828000] [<81032fc8>] do_softirq+0x78/0x80 [ 241.836000] [<81033254>] irq_exit+0x78/0x84 [ 241.844000] [<810060b0>] ret_from_irq+0x0/0x4 [ 241.852000] [<8102c638>] vprintk_emit+0x1d0/0x5b8 [ 241.860000] [<815af76c>] printk+0x38/0x44 [ 241.868000] [<81029f74>] oops_exit+0x24/0x40 [ 241.876000] [<8100bb04>] die+0xd8/0x130 [ 241.884000] [<8100bd48>] do_trap_or_bp+0x1a4/0x1bc [ 241.896000] [<810060a0>] ret_from_exception+0x0/0x10 [ 241.904000] [<810c17b4>] cache_alloc_refill+0x100/0x804 [ 241.916000] [<810c1674>] kmem_cache_alloc+0xd0/0x110 [ 241.924000] [<814ac59c>] skb_clone+0x60/0x130 [ 241.932000] [<814dc860>] netlink_broadcast_filtered+0x2fc/0x580 [ 241.944000] [<814dcb04>] netlink_broadcast+0x20/0x2c [ 241.956000] [<814df888>] nlmsg_notify+0x80/0x15c [ 241.964000] [<815a90d0>] wireless_nlevent_flush+0x50/0xb8 [ 241.976000] [<815a9204>] wireless_nlevent_process+0x18/0x24 [ 241.988000] [<81047200>] process_one_work+0x13c/0x434 [ 241.996000] [<81047d24>] worker_thread+0x170/0x4dc [ 242.008000] [<8104e140>] kthread+0xb8/0xc0 [ 242.016000] [<810060f8>] ret_from_kernel_thread+0x14/0x1c [ 242.024000] [ 242.028000] Code: 00431023 a6e20058 02201021 <8c420078> 3c03816e 2463f35c aee20070 8f820010 3c15816e [ 242.048000] ---[ end trace 896ccfcdf9aadaff ]--- [ 242.076000] Kernel panic - not syncing: Fatal exception in interrupt [ 242.092000] mtdoops: Cannot write from panic without panic_write [ 242.092000] Stop feeding the WatchDog (uptime = 242.12, nowtime = 05:29:38). Dump Current [ 242.092000] CPU: 3 PID: 110 Comm: kworker/3:1 Tainted: P D W O 3.10.108 #25 [ 242.092000] Workqueue: events wireless_nlevent_process [ 242.092000] Stack : 87d88880 81635500 00000000 00000000 81853d2c 00030000 00000200 87d1d7c0 81aa07c8 815af76c 81853d14 8104e8c4 00000200 00000000 816962c8 87d1d59c 87d1d59c 81029ce8 c0076f9d 810498d4 8163718c 00000000 000036f2 00000000 00000000 00000000 00000000 00000000 00000000 00000000 6e657665 00007374 00000000 00000000 00000000 00000000 87c2e980 81aa2c00 815a91ec 87d1d548 ... [ 242.092000] Call Trace: [ 242.092000] [<8100b930>] show_stack+0x64/0x7c [ 242.092000] [<81002908>] tpwdt_panic_event+0x14c/0x174 [ 242.092000] [<81054d24>] notifier_call_chain+0x54/0xac [ 242.092000] [<81054db8>] atomic_notifier_call_chain+0x18/0x24 [ 242.092000] [<815af5f0>] panic+0xc8/0x1dc [ 242.092000] [<8100bb3c>] die+0x110/0x130 [ 242.092000] [<81013608>] do_page_fault+0x388/0x430 [ 242.092000] [<810060a0>] ret_from_exception+0x0/0x10 [ 242.092000] [<814b9b90>] __netif_receive_skb_core+0x70/0x82c [ 242.092000] [<814bd4f8>] process_backlog+0xb8/0x1c0 [ 242.092000] [<814bd344>] net_rx_action+0xec/0x1e8 [ 242.092000] [<81032ddc>] __do_softirq+0x128/0x230 [ 242.092000] [<81032fc8>] do_softirq+0x78/0x80 [ 242.092000] [<81033254>] irq_exit+0x78/0x84 [ 242.092000] [<810060b0>] ret_from_irq+0x0/0x4 [ 242.092000] [<8102c638>] vprintk_emit+0x1d0/0x5b8 [ 242.092000] [<815af76c>] printk+0x38/0x44 [ 242.092000] [<81029f74>] oops_exit+0x24/0x40 [ 242.092000] [<8100bb04>] die+0xd8/0x130 [ 242.092000] [<8100bd48>] do_trap_or_bp+0x1a4/0x1bc [ 242.092000] [<810060a0>] ret_from_exception+0x0/0x10 [ 242.092000] [<810c17b4>] cache_alloc_refill+0x100/0x804 [ 242.092000] [<810c1674>] kmem_cache_alloc+0xd0/0x110 [ 242.092000] [<814ac59c>] skb_clone+0x60/0x130 [ 242.092000] [<814dc860>] netlink_broadcast_filtered+0x2fc/0x580 [ 242.092000] [<814dcb04>] netlink_broadcast+0x20/0x2c [ 242.092000] [<814df888>] nlmsg_notify+0x80/0x15c [ 242.092000] [<815a90d0>] wireless_nlevent_flush+0x50/0xb8 [ 242.092000] [<815a9204>] wireless_nlevent_process+0x18/0x24 [ 242.092000] [<81047200>] process_one_work+0x13c/0x434 [ 242.092000] [<81047d24>] worker_thread+0x170/0x4dc [ 242.092000] [<8104e140>] kthread+0xb8/0xc0 [ 242.092000] [<810060f8>] ret_from_kernel_thread+0x14/0x1c [ 242.092000] [ 242.092000] Kernel panic event watchdog notification done. [ 242.092000] =================================================================== MT7621 stage1 code Jan 7 2020 10:33:39 (ASIC) CPU=500000000 HZ BUS=166666666 HZ ================================================================== Change MPLL source from XTAL to CR... 这段路由器串口输出报错是什么含义
最新发布
12-27
你是个Linux内核专家,请帮忙分析如下kernel panic, 请输出可能的原因以及debug思路 [ 148.820908] Unable to handle kernel paging request at virtual address a31c3e12 [ 148.828155] pgd = 8e9d746c [ 148.830857] [a31c3e12] *pgd=10280003, *pmd=00000000 [ 148.835737] Internal error: Oops: 206 [#1] PREEMPT SMP ARM [ 148.841213] Modules linked in: wl(P) init_addr(00000000 - 00000000), core_addr(e38bf000 - e3f2e000) [ 148.850254] igs init_addr(00000000 - 00000000), core_addr(bf763000 - bf766000) [ 148.857553] emf init_addr(00000000 - 00000000), core_addr(bf757000 - bf75a000) [ 148.864852] hnd init_addr(00000000 - 00000000), core_addr(bf6e0000 - bf70a000) [ 148.872152] cfg80211 init_addr(00000000 - 00000000), core_addr(bf691000 - bf6be000) [ 148.879886] firmware_class init_addr(00000000 - 00000000), core_addr(bf688000 - bf689000) [ 148.888141] wlshared init_addr(00000000 - 00000000), core_addr(bf67f000 - bf680000) [ 148.895874] urlfilter(PO) init_addr(00000000 - 00000000), core_addr(bf64f000 - bf652000) [ 148.904042] mesh(O) init_addr(00000000 - 00000000), core_addr(bf644000 - bf646000) [ 148.911689] lbd(O) init_addr(00000000 - 00000000), core_addr(bf63b000 - bf63c000) [ 148.919249] rate_limit(O) init_addr(00000000 - 00000000), core_addr(bf61b000 - bf61d000) [ 148.927417] portal(O) init_addr(00000000 - 00000000), core_addr(bf59f000 - bf5a8000) [ 148.935238] tp_domain(O) init_addr(00000000 - 00000000), core_addr(bf595000 - bf597000) [ 148.943318] tls_tuple_lib(O) init_addr(00000000 - 00000000), core_addr(bf58c000 - bf58d000) [ 148.951747] tp_mdns(O) init_addr(00000000 - 00000000), core_addr(bf577000 - bf57b000) [ 148.959654] dhcp_capture(O) init_addr(00000000 - 00000000), core_addr(bf569000 - bf56c000) [ 148.967995] tp_sniffer(O) init_addr(00000000 - 00000000), core_addr(bf55e000 - bf560000) [ 148.976163] vlan_manage(O) init_addr(00000000 - 00000000), core_addr(bf555000 - bf556000) [ 148.984417] multiPort(O) init_addr(00000000 - 00000000), core_addr(bf546000 - bf548000) [ 148.992498] utility_core(O) init_addr(00000000 - 00000000), core_addr(bf53d000 - bf53e000) [ 149.000840] gpio(O) init_addr(00000000 - 00000000), core_addr(bf524000 - bf528000) [ 149.008486] bcm_pcie_hcd init_addr(00000000 - 00000000), core_addr(bf503000 - bf511000) [ 149.016567] bcmmcast init_addr(00000000 - 00000000), core_addr(bf4dd000 - bf4ed000) [ 149.024300] pcap init_addr(00000000 - 00000000), core_addr(bf4d3000 - bf4d5000) [ 149.031687] bcm_enet init_addr(00000000 - 00000000), core_addr(bf495000 - bf4b5000) [ 149.039420] archer(P) init_addr(00000000 - 00000000), core_addr(bf43c000 - bf461000) [ 149.047241] bcm_archer_gpl init_addr(00000000 - 00000000), core_addr(bf432000 - bf433000) [ 149.055497] cmdlist(P) init_addr(00000000 - 00000000), core_addr(bf412000 - bf422000) [ 149.063410] pktflow(P) init_addr(00000000 - 00000000), core_addr(bf3a9000 - bf3e0000) [ 149.071319] bcm_ingqos init_addr(00000000 - 00000000), core_addr(bf36b000 - bf36f000) [ 149.079227] bcm_bp3drv(P) init_addr(00000000 - 00000000), core_addr(bf344000 - bf355000) [ 149.087394] bcmvlan(P) init_addr(00000000 - 00000000), core_addr(bf321000 - bf330000) [ 149.095301] bcm_bpm(P) init_addr(00000000 - 00000000), core_addr(bf30c000 - bf312000) [ 149.103209] bcm_knvram init_addr(00000000 - 00000000), core_addr(bf301000 - bf303000) [ 149.111116] bcmlibs init_addr(00000000 - 00000000), core_addr(bf2f1000 - bf2f5000) [ 149.118763] br_netfilter init_addr(00000000 - 00000000), core_addr(bf2e5000 - bf2e8000) [ 149.126844] ip6t_REJECT init_addr(00000000 - 00000000), core_addr(bf2cc000 - bf2cd000) [ 149.134838] ip6table_raw init_addr(00000000 - 00000000), core_addr(bf2c3000 - bf2c4000) [ 149.142919] ip6table_mangle init_addr(00000000 - 00000000), core_addr(bf2ba000 - bf2bb000) [ 149.151260] ip6table_filter init_addr(00000000 - 00000000), core_addr(bf2b1000 - bf2b2000) [ 149.159601] ip6_tables init_addr(00000000 - 00000000), core_addr(bf2a5000 - bf2a8000) [ 149.167508] xt_blog init_addr(00000000 - 00000000), core_addr(bf292000 - bf293000) [ 149.175155] nf_nat_pptp init_addr(00000000 - 00000000), core_addr(bf260000 - bf261000) [ 149.183149] nf_conntrack_pptp init_addr(00000000 - 00000000), core_addr(bf257000 - bf258000) [ 149.191663] nf_nat_h323 init_addr(00000000 - 00000000), core_addr(bf24d000 - bf24f000) [ 149.199658] nf_nat_proto_gre init_addr(00000000 - 00000000), core_addr(bf231000 - bf232000) [ 149.208086] xt_physdev init_addr(00000000 - 00000000), core_addr(bf1fb000 - bf1fc000) [ 149.215993] xt_mark init_addr(00000000 - 00000000), core_addr(bf1f2000 - bf1f3000) [ 149.223640] xt_time init_addr(00000000 - 00000000), core_addr(bf1e9000 - bf1ea000) [ 149.231287] xt_iprange init_addr(00000000 - 00000000), core_addr(bf1e0000 - bf1e1000) [ 149.239194] xt_DSCP init_addr(00000000 - 00000000), core_addr(bf1d7000 - bf1d8000) [ 149.246841] xt_pkttype init_addr(00000000 - 00000000), core_addr(bf1ce000 - bf1cf000) [ 149.254748] xt_REDIRECT init_addr(00000000 - 00000000), core_addr(bf1c5000 - bf1c6000) [ 149.262742] xt_NETMAP init_addr(00000000 - 00000000), core_addr(bf1bc000 - bf1bd000) [ 149.270563] xt_nat init_addr(00000000 - 00000000), core_addr(bf1b3000 - bf1b4000) [ 149.278123] ipt_MASQUERADE init_addr(00000000 - 00000000), core_addr(bf1aa000 - bf1ab000) [ 149.286377] iptable_nat init_addr(00000000 - 00000000), core_addr(bf1a1000 - bf1a2000) [ 149.294371] nf_nat_ipv4 init_addr(00000000 - 00000000), core_addr(bf197000 - bf198000) [ 149.302364] nf_nat_tftp init_addr(00000000 - 00000000), core_addr(bf18e000 - bf18f000) [ 149.310358] nf_nat_sip init_addr(00000000 - 00000000), core_addr(bf184000 - bf186000) [ 149.318266] nf_nat_irc init_addr(00000000 - 00000000), core_addr(bf17b000 - bf17c000) [ 149.326173] nf_nat_ftp init_addr(00000000 - 00000000), core_addr(bf172000 - bf173000) [ 149.334083] nf_nat init_addr(00000000 - 00000000), core_addr(bf164000 - bf167000) [ 149.341647] xt_policy init_addr(00000000 - 00000000), core_addr(bf117000 - bf118000) [ 149.349468] xt_conntrack init_addr(00000000 - 00000000), core_addr(bf10e000 - bf10f000) [ 149.357549] xt_state init_addr(00000000 - 00000000), core_addr(bf105000 - bf106000) [ 149.365282] nf_conntrack_tftp init_addr(00000000 - 00000000), core_addr(bf0fc000 - bf0fd000) [ 149.373797] nf_conntrack_sip init_addr(00000000 - 00000000), core_addr(bf0ef000 - bf0f3000) [ 149.382226] nf_conntrack_proto_gre init_addr(00000000 - 00000000), core_addr(bf0e6000 - bf0e7000) [ 149.391175] nf_conntrack_netlink init_addr(00000000 - 00000000), core_addr(bf0cd000 - bf0d3000) [ 149.399950] nfnetlink init_addr(00000000 - 00000000), core_addr(bf0c4000 - bf0c5000) [ 149.407770] nf_conntrack_irc init_addr(00000000 - 00000000), core_addr(bf0bb000 - bf0bc000) [ 149.416198] nf_conntrack_h323 init_addr(00000000 - 00000000), core_addr(bf0a8000 - bf0ac000) [ 149.424712] nf_conntrack_ftp init_addr(00000000 - 00000000), core_addr(bf09f000 - bf0a0000) [ 149.433141] nf_conntrack init_addr(00000000 - 00000000), core_addr(bf07b000 - bf089000) [ 149.441221] nf_defrag_ipv6 init_addr(00000000 - 00000000), core_addr(bf066000 - bf067000) [ 149.449476] nf_defrag_ipv4 init_addr(00000000 - 00000000), core_addr(bf05d000 - bf05e000) [ 149.457730] ipt_REJECT init_addr(00000000 - 00000000), core_addr(bf054000 - bf055000) [ 149.465637] xt_TCPMSS init_addr(00000000 - 00000000), core_addr(bf04b000 - bf04c000) [ 149.473457] xt_comment init_addr(00000000 - 00000000), core_addr(bf042000 - bf043000) [ 149.481365] xt_multiport init_addr(00000000 - 00000000), core_addr(bf039000 - bf03a000) [ 149.489446] xt_mac init_addr(00000000 - 00000000), core_addr(bf030000 - bf031000) [ 149.497006] xt_mac_extend init_addr(00000000 - 00000000), core_addr(bf027000 - bf028000) [ 149.505174] xt_limit init_addr(00000000 - 00000000), core_addr(bf01e000 - bf01f000) [ 149.512907] iptable_mangle init_addr(00000000 - 00000000), core_addr(bf015000 - bf016000) [ 149.521161] iptable_filter init_addr(00000000 - 00000000), core_addr(bf00c000 - bf00d000) [ 149.529416] ip_tables init_addr(00000000 - 00000000), core_addr(bf000000 - bf003000) [ 149.537242] CPU: 2 PID: 3077 Comm: nrd Tainted: P O 4.19.294 #1 [ 149.544453] Hardware name: Generic DT based system [ 149.551011] PC is at wlc_mlo_delete_rnr_list+0x1c/0x78 [wl] [ 149.557776] LR is at wlc_bss_list_free+0x60/0xa0 [wl] [ 149.562822] pc : [<e3d94cc4>] lr : [<e3bf6bd8>] psr: a0000013 [ 149.569078] sp : d0247c00 ip : 00000000 fp : 00000002 [ 149.574292] r10: d0247cdc r9 : d1c8b800 r8 : 00000000 [ 149.579508] r7 : d4d92000 r6 : a31c3e0e r5 : d4d92000 r4 : d02f4000 [ 149.586024] r3 : 00000000 r2 : 60000013 r1 : d3dcffc0 r0 : d4d92000 [ 149.592542] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user [ 149.599666] Control: 30c5387d Table: 13e0efc0 DAC: adcf9dee [ 149.605408] Process nrd (pid: 3077, stack limit = 0x82cf5683) [ 149.611144] Stack: (0xd0247c00 to 0xd0248000) [ 149.615494] 7c00: d02f4000 00000001 d1c8b804 e3bf6bd8 d4d92000 00000000 db95c000 d4e94f40 [ 149.623662] 7c20: 00000001 00000000 d0247cdc e3e56a5c d0247cb8 00000000 00000000 00000001 [ 149.631830] 7c40: ffffffff ffffffff ffffffff e3638060 00000001 00000000 00000001 e3e55a54 [ 149.639997] 7c60: d4d92000 00000000 00000001 db95c000 00000000 00000000 00000000 00000000 [ 149.648164] 7c80: 00000000 00000001 00000001 d0247cb8 ffffffff 00000000 d0247cb8 ffffffff [ 149.656331] 7ca0: 00000000 00000001 ffffffff 00000002 00000000 db95c000 00000000 00000000 [ 149.664498] 7cc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ffffffff [ 149.672666] 7ce0: 0002ffff 00000001 ffffffff 00000000 ffffffff ffffffff ffffffff 00000001 [ 149.680833] 7d00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 d3059aa2 [ 149.688999] 7d20: 00000003 e3638000 d4d92000 00001000 00000032 d4e94f40 d8e76b00 00001000 [ 149.697167] 7d40: e3e5722c e3e57430 00000003 db95c000 00000019 d4d1a000 d0247cf0 c02fb3c0 [ 149.705334] 7d60: 00000100 d3059aa2 0000061f 00000012 d4d8b800 00000032 e3638000 00000014 [ 149.713502] 7d80: d8e76b00 00001000 e3e5722c e3b544ec d8e76b00 d0247de0 d0247da0 00000032 [ 149.721669] 7da0: d4d92000 00001000 e3638000 d8e76b00 00000001 d3dd9a00 00000001 e3d353f8 [ 149.729837] 7dc0: d8e76b00 00000002 d8c59680 c02ceb64 d8c59a00 00005000 d8c59680 00000022 [ 149.738004] 7de0: 0060ffff 00000000 00000000 00000000 00000000 c02cd8f0 006000c0 00004000 [ 149.746172] 7e00: 0000061f 00800000 006000c0 d8c59680 ffffffff 00000036 00042fcc c02cf2c4 [ 149.754339] 7e20: ffffffff ffffffff 006000c0 bf6fa338 de478d10 d3059aa2 dd446b40 00000000 [ 149.762506] 7e40: d3dd9a00 da185000 e3638000 da185024 000000f0 00000036 00042fcc e3bddbf8 [ 149.770673] 7e60: d8e76b00 c0ad0934 00000000 c08b443c c0e21940 00000032 beee5c68 00001000 [ 149.778841] 7e80: 00000000 00000000 00000000 d3059aa2 d0247edc d0247edc 000089f0 c0e21940 [ 149.787008] 7ea0: d0247ed4 00000000 000000f0 c067b320 000089f0 beee5bb8 de6a0720 ffffc000 [ 149.795175] 7ec0: d8c7fe40 d0244000 00000036 c0631cf4 de9dd480 00000001 00000002 2e306c77 [ 149.803342] 7ee0: 00000031 00000000 00000000 beee5ba0 00000000 00000000 00000000 d3059aa2 [ 149.811510] 7f00: 00000020 beee5bb8 d8c7fe40 de6a0720 beee5bb8 c02fa430 c0a40cc0 c02e86c8 [ 149.819677] 7f20: de819710 c0e246c0 de6a0720 c02e8818 de819710 de63ff68 00000000 00000003 [ 149.827844] 7f40: c0e246c0 00000000 00000000 d3059aa2 0000000c de6a0700 00000000 de6a0700 [ 149.836012] 7f60: c0201288 c063076c 0000000c d3059aa2 d8c7fe40 0000000c 000089f0 beee5bb8 [ 149.844179] 7f80: d8c7fe40 d0244000 00000036 c02fa984 beee5bb8 00000000 00000032 00000036 [ 149.852346] 7fa0: c0201288 c0201000 beee5bb8 00000000 0000000c 000089f0 beee5bb8 beee5ba0 [ 149.860536] 7fc0: beee5bb8 00000000 00000032 00000036 beee5c68 0000000c 00dc554a 00042fcc [ 149.868745] 7fe0: 000690a0 beee5b94 00040e24 b6e1536c 80000010 0000000c 00000000 00000000 [ 149.879906] [<e3d94cc4>] (wlc_mlo_delete_rnr_list [wl]) from [<e3bf6bd8>] (wlc_bss_list_free+0x60/0xa0 [wl]) [ 149.891645] [<e3bf6bd8>] (wlc_bss_list_free [wl]) from [<e3e56a5c>] (wlc_custom_scan+0x720/0x89c [wl]) [ 149.902697] [<e3e56a5c>] (wlc_custom_scan [wl]) from [<e3e57430>] (wlc_scan_utils_doioctl+0x204/0x2c4 [wl]) [ 149.914084] [<e3e57430>] (wlc_scan_utils_doioctl [wl]) from [<e3b544ec>] (wlc_iocv_high_proc_ioc+0x68/0x94 [wl]) [ 149.926198] [<e3b544ec>] (wlc_iocv_high_proc_ioc [wl]) from [<e3d353f8>] (wlc_ioctl+0xae8/0xf84 [wl]) [ 149.937165] [<e3d353f8>] (wlc_ioctl [wl]) from [<e3bddbf8>] (wl_ioctl+0x4e4/0x594 [wl]) [ 149.946030] [<e3bddbf8>] (wl_ioctl [wl]) from [<c067b320>] (dev_ioctl+0x378/0x648) [ 149.953604] [<c067b320>] (dev_ioctl) from [<c0631cf4>] (sock_ioctl+0x2ec/0x498) [ 149.960910] [<c0631cf4>] (sock_ioctl) from [<c02fa430>] (do_vfs_ioctl+0x380/0x840) [ 149.968475] [<c02fa430>] (do_vfs_ioctl) from [<c02fa984>] (sys_ioctl+0x34/0x60) [ 149.975778] [<c02fa984>] (sys_ioctl) from [<c0201000>] (ret_fast_syscall+0x0/0x50) [ 149.983337] Exception stack(0xd0247fa8 to 0xd0247ff0) [ 149.988380] 7fa0: beee5bb8 00000000 0000000c 000089f0 beee5bb8 beee5ba0 [ 149.996547] 7fc0: beee5bb8 00000000 00000032 00000036 beee5c68 0000000c 00dc554a 00042fcc [ 150.004714] 7fe0: 000690a0 beee5b94 00040e24 b6e1536c [ 150.009762] Code: e1a05000 e5916000 e3560000 0a000012 (e5964004) [ 150.016846] ---[ end trace 7c3b189d8236e67c ]--- [ 150.021539] Kernel panic - not syncing: Fatal exception [ 150.026765] CPU2: stopping [ 150.029470] CPU: 2 PID: 0 Comm: swapper/2 Tainted: P D O 4.19.294 #1 [ 150.036940] Hardware name: Generic DT based system [ 150.041742] [<c02108d4>] (unwind_backtrace) from [<c020b3f4>] (show_stack+0x10/0x14) [ 150.049484] [<c020b3f4>] (show_stack) from [<c08c7f1c>] (dump_stack+0x8c/0xa0) [ 150.056700] [<c08c7f1c>] (dump_stack) from [<c020ec04>] (handle_IPI+0x168/0x18c) [ 150.064090] [<c020ec04>] (handle_IPI) from [<c04c215c>] (gic_handle_irq+0x8c/0x90) [ 150.071653] [<c04c215c>] (gic_handle_irq) from [<c02020f8>] (__irq_svc+0x58/0x8c) [ 150.079124] Exception stack(0xde897f38 to 0xde897f80) [ 150.084166] 7f20: 00000000 00000022 [ 150.092333] 7f40: 1e36d000 defb1100 ee4ab886 00000022 defb05e8 00000001 ee46089f 00000022 [ 150.100500] 7f60: 00000000 00000001 0000000b de897f88 c05f3c98 c05f3c9c 80000113 ffffffff [ 150.108675] [<c02020f8>] (__irq_svc) from [<c05f3c9c>] (cpuidle_enter_state+0x80/0x2ec) [ 150.116674] [<c05f3c9c>] (cpuidle_enter_state) from [<c02493d8>] (do_idle+0x1d4/0x258) [ 150.124582] [<c02493d8>] (do_idle) from [<c0249738>] (cpu_startup_entry+0x18/0x1c) [ 150.132142] [<c0249738>] (cpu_startup_entry) from [<00202a4c>] (0x202a4c) [ 150.138920] CPU3: stopping [ 150.141620] CPU: 3 PID: 0 Comm: swapper/3 Tainted: P D O 4.19.294 #1 [ 150.149090] Hardware name: Generic DT based system [ 150.153875] [<c02108d4>] (unwind_backtrace) from [<c020b3f4>] (show_stack+0x10/0x14) [ 150.161609] [<c020b3f4>] (show_stack) from [<c08c7f1c>] (dump_stack+0x8c/0xa0) [ 150.168823] [<c08c7f1c>] (dump_stack) from [<c020ec04>] (handle_IPI+0x168/0x18c) [ 150.176209] [<c020ec04>] (handle_IPI) from [<c04c215c>] (gic_handle_irq+0x8c/0x90) [ 150.183768] [<c04c215c>] (gic_handle_irq) from [<c02020f8>] (__irq_svc+0x58/0x8c) [ 150.191239] Exception stack(0xde89bf38 to 0xde89bf80) [ 150.196279] bf20: 00000000 00000022 [ 150.204447] bf40: 1e37b000 defbf100 ee4ab886 00000022 defbe5e8 00000001 ee45f5df 00000022 [ 150.212614] bf60: 00000000 00000001 0000000b de89bf88 c05f3c98 c05f3c9c 80000013 ffffffff [ 150.220782] [<c02020f8>] (__irq_svc) from [<c05f3c9c>] (cpuidle_enter_state+0x80/0x2ec) [ 150.228777] [<c05f3c9c>] (cpuidle_enter_state) from [<c02493d8>] (do_idle+0x1d4/0x258) [ 150.236684] [<c02493d8>] (do_idle) from [<c0249738>] (cpu_startup_entry+0x18/0x1c) [ 150.244243] [<c0249738>] (cpu_startup_entry) from [<00202a4c>] (0x202a4c) [ 150.251021] CPU0: stopping [ 150.253720] CPU: 0 PID: 0 Comm: swapper/0 Tainted: P D O 4.19.294 #1 [ 150.261191] Hardware name: Generic DT based system [ 150.265975] [<c02108d4>] (unwind_backtrace) from [<c020b3f4>] (show_stack+0x10/0x14) [ 150.273709] [<c020b3f4>] (show_stack) from [<c08c7f1c>] (dump_stack+0x8c/0xa0) [ 150.280923] [<c08c7f1c>] (dump_stack) from [<c020ec04>] (handle_IPI+0x168/0x18c) [ 150.288310] [<c020ec04>] (handle_IPI) from [<c04c215c>] (gic_handle_irq+0x8c/0x90) [ 150.295870] [<c04c215c>] (gic_handle_irq) from [<c02020f8>] (__irq_svc+0x58/0x8c) [ 150.303341] Exception stack(0xc0e03ee8 to 0xc0e03f30) [ 150.308382] 3ee0: 00000000 00000022 1e351000 def95100 ee4ab886 00000022 [ 150.316549] 3f00: def945e8 00000001 ee45f9a2 00000022 00000000 00000001 0000000b c0e03f38 [ 150.324716] 3f20: c05f3c98 c05f3c9c 80070013 ffffffff [ 150.329759] [<c02020f8>] (__irq_svc) from [<c05f3c9c>] (cpuidle_enter_state+0x80/0x2ec) [ 150.337754] [<c05f3c9c>] (cpuidle_enter_state) from [<c02493d8>] (do_idle+0x1d4/0x258) [ 150.345660] [<c02493d8>] (do_idle) from [<c0249738>] (cpu_startup_entry+0x18/0x1c) [ 150.353222] [<c0249738>] (cpu_startup_entry) from [<c0c00fb4>] (start_kernel+0x4d8/0x510) [ 150.361450] [ 150.361450] Stop feeding the WatchDog . [ 150.361450] Dump Current [ 150.361455] CPU: 1 PID: 3077 Comm: nrd Tainted: P D O 4.19.294 #1 [ 150.376569] Hardware name: Generic DT based system [ 150.381353] [<c02108d4>] (unwind_backtrace) from [<c020b3f4>] (show_stack+0x10/0x14) [ 150.389088] [<c020b3f4>] (show_stack) from [<c08c7f1c>] (dump_stack+0x8c/0xa0) [ 150.396301] [<c08c7f1c>] (dump_stack) from [<c020c3cc>] (tpwdt_panic_event+0x48/0x64) [ 150.404124] [<c020c3cc>] (tpwdt_panic_event) from [<c023f900>] (atomic_notifier_call_chain+0x64/0x88) [ 150.413335] [<c023f900>] (atomic_notifier_call_chain) from [<c08bebcc>] (panic+0x138/0x280) [ 150.421677] [<c08bebcc>] (panic) from [<c020b6d4>] (die+0x2dc/0x2f8) [ 150.428022] [<c020b6d4>] (die) from [<c0211718>] (__do_kernel_fault.part.0+0x64/0x74) [ 150.435844] [<c0211718>] (__do_kernel_fault.part.0) from [<c02119e0>] (do_bad_area+0x0/0x80) [ 150.444272] [<c02119e0>] (do_bad_area) from [<a31c3e12>] (0xa31c3e12) [ 150.450701] Kernel panic event watchdog notification done. [ 150.450701]
12-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值