免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1668 | 回复: 3
打印 上一主题 下一主题

[内核模块] Netfilter hook函数中使用等待队列问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-07-04 15:32 |只看该作者 |倒序浏览
在Netfilter hook函数中, 将消息通过netlink 发送到用户层,然后使用等待队列wait_event_timeout等待指定时间,用户层收到信息后通过netlink发送消息,内核接收到消息后调用wake_up**,但是当hook函数返回NF_DROP时候会出现 BUG: scheduling while atomic,有时还会死机。急!!!  求指教

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2016-07-05 08:42 |只看该作者
回复 1# Jacob_linux
详细的 BUG 信息就是这个吗。你在用户态处理报文需要多久。

   

论坛徽章:
0
3 [报告]
发表于 2016-07-05 10:06 |只看该作者
回复 2# Godbach

Jul  4 17:31:41 jager kernel: BUG: scheduling while atomic: swapper/0/0x10000100
Jul  4 17:31:41 jager kernel: Modules linked in: anetctl(U) autofs4 sunrpc 8021q garp stp llc ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 fuse vmhgfs(U) vsock(U) snd_ens1371 snd_rawmidi snd_ac97_codec ac97_bus snd_seq snd_seq_device snd_pcm snd_timer snd soundcore snd_page_alloc e1000 sg microcode vmware_balloon vmci(U) i2c_piix4 i2c_core shpchp uinput ext4 mbcache jbd2 sd_mod crc_t10dif sr_mod cdrom mptspi mptscsih mptbase scsi_transport_spi pata_acpi ata_generic ata_piix dm_mirror dm_region_hash dm_log dm_mod [last unloaded: anetctl]
Jul  4 17:31:41 jager kernel: CPU 0
Jul  4 17:31:41 jager kernel: Modules linked in: anetctl(U) autofs4 sunrpc 8021q garp stp llc ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 fuse vmhgfs(U) vsock(U) snd_ens1371 snd_rawmidi snd_ac97_codec ac97_bus snd_seq snd_seq_device snd_pcm snd_timer snd soundcore snd_page_alloc e1000 sg microcode vmware_balloon vmci(U) i2c_piix4 i2c_core shpchp uinput ext4 mbcache jbd2 sd_mod crc_t10dif sr_mod cdrom mptspi mptscsih mptbase scsi_transport_spi pata_acpi ata_generic ata_piix dm_mirror dm_region_hash dm_log dm_mod [last unloaded: anetctl]
Jul  4 17:31:41 jager kernel:
Jul  4 17:31:41 jager kernel: Pid: 0, comm: swapper Not tainted 2.6.32-358.11.1.2.ky3.1.x86_64 #1 VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform
Jul  4 17:31:41 jager kernel: RIP: 0010:[<ffffffff8103b90b>]  [<ffffffff8103b90b>] native_safe_halt+0xb/0x10
Jul  4 17:31:41 jager kernel: RSP: 0018:ffffffff81a01ec8  EFLAGS: 00000246
Jul  4 17:31:41 jager kernel: RAX: 0000000000000000 RBX: ffffffff81a01ec8 RCX: 0000000000000000
Jul  4 17:31:41 jager kernel: RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffffffff825e1228
Jul  4 17:31:41 jager kernel: RBP: ffffffff8100bb8e R08: 0000000000000000 R09: 0000000000000000
Jul  4 17:31:41 jager kernel: R10: 0000031a501539e2 R11: 0000000000000000 R12: 0000000000000086
Jul  4 17:31:41 jager kernel: R13: ffffffff81a01e38 R14: ffff880014a115e8 R15: ffffffff81a01e78
Jul  4 17:31:41 jager kernel: FS:  0000000000000000(0000) GS:ffff880014a00000(0000) knlGS:0000000000000000
Jul  4 17:31:41 jager kernel: CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
Jul  4 17:31:41 jager kernel: CR2: 00007fe021c19000 CR3: 0000000037f98000 CR4: 00000000001407f0
Jul  4 17:31:41 jager kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Jul  4 17:31:41 jager kernel: DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Jul  4 17:31:41 jager kernel: Process swapper (pid: 0, threadinfo ffffffff81a00000, task ffffffff81a8d020)
Jul  4 17:31:41 jager kernel: Stack:
Jul  4 17:31:41 jager kernel: ffffffff81a01ee8 ffffffff81014a3d ffffffff81a01fd8 ffffffff82407560
Jul  4 17:31:41 jager kernel: <d> ffffffff81a01f18 ffffffff81009fc6 6db6db6db6db6db7 74f37c0561630b83
Jul  4 17:31:41 jager kernel: <d> 0000000000000000 6db6db6db6db6db7 ffffffff81a01f28 ffffffff814f493a
Jul  4 17:31:41 jager kernel: Call Trace:
Jul  4 17:31:41 jager kernel: [<ffffffff81014a3d>] ? default_idle+0x4d/0xb0
Jul  4 17:31:41 jager kernel: [<ffffffff81009fc6>] ? cpu_idle+0xb6/0x110
Jul  4 17:31:41 jager kernel: [<ffffffff814f493a>] ? rest_init+0x7a/0x80
Jul  4 17:31:41 jager kernel: [<ffffffff82427f7b>] ? start_kernel+0x424/0x430
Jul  4 17:31:41 jager kernel: [<ffffffff8242733a>] ? x86_64_start_reservations+0x125/0x1

详细的信息, 我认为与用户态处理时间没有关系, 我正常ACCEPT 是没有问题的,DROP或者QUEUE ,才会出这些警告,网上说这种是在中断上下文中不可使用休眠类函数,那类似等待队列的延时机制都不可用吗?
   

论坛徽章:
0
4 [报告]
发表于 2016-07-05 12:50 |只看该作者
软中断里,就不能做这个“然后使用等待队列wait_event_timeout等待指定时间”。

错误信息已经很明显了。wait_event_timeout会被schedule,怎么能在atomic上下文做呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP