Bootstrap

【Linux】【Kernel】BUG: scheduling while atomic问题分析

内核模块local_clients用于监听DHCP包,并把主机名字,IP,MAC等信息写到文件/proc/local_clients/local_clients_info,然后webserver解析这个问题,达到显示当前连接到AP的无线客户端主机名称的功能
/tmp # cat /proc/local_clients/local_clients_info
58-7F-57-8B-BC-0D 192.168.0.100 myPhone
现在需要对这个模块进行改进,增加监听DNS报文,确定连接到AP的主机的IP和MAC,结果写入/proc/local_clients/local_clients_info,在用户空间解析这个问题,如果发现存在主机名是未知(UNKNOWN)的条目,则通过用户态程序client_mgmt发NBNS或者MDNS获取主机名。
/tmp # cat /proc/local_clients/local_clients_info
14-CC-20-16-FB-DA 192.168.0.110 UNKNOWN

问题:解析主机名功能实现了,但是跑了大概2个多小时,串口出现异常打印如下:
[ 3419.912000] BUG: scheduling while atomic:client_mgmt/1051/0x00000100
[ 3419.916000] Modules linked in: umac ath_dev(P)ath_rate_atheros(P) ath_hal(P) asf(P) adf(P) athrs_gmac local_clients
[ 3419.928000] Cpu 0
[ 3419.932000] 0:00000000000000010000000000000000[3419.936000] 4 :00000041 832e4500 000000fe 23c637bb
[ 3419.944000] 8:3b9aca00129b0ea4c4ec4e0cfffffff8[3419.948000] 12 :fffffffe 592f6656 00000000 004031a4
[ 3419.952000] 16:00000d5b832d

;