Hi,
I get a kernel dump (see below, code follows) each time netlink_broadcast is invoked by a handler dispatched with schedule_work(...) from a kernel timer handler. Are there any restrictions to calling netlink_broadcast from a tasklet? Thanks in advance.
Cheers, John.
---
Unable to handle kernel paging request at virtual address f6a34fb0 printing eip: f88233ca *pde = 00488067 *pte = 36a34000 Oops: 0000 [#1] CPU: 1 EIP: 0060:[__crc_utf8_wctomb+5448385/6417782] Not tainted EFLAGS: 00010246 EIP is at uk_task+0xda/0x160 [uk] eax: 00000000 ebx: f6a34f4c ecx: 00000000 edx: fffffffd esi: f2f1fbf8 edi: f8824460 ebp: c1a95f64 esp: c1a95f48 ds: 007b es: 007b ss: 0068 Process events/1 (pid: 7, threadinfo=c1a94000 task=c1a619b0) Stack: f2fa7e94 f6a34f4c 00000000 00000159 00000020 c1a94000 f8824464 c1a95fec c01370f6 00000000 c1a95fa0 00000000 c1a64f90 c1a64fa0 00000000 f88232f0 00000212 c1a64f88 c1a64f78 5a5a5a5a 5a5a5a5a 5a5a5a5a 00000001 00000000 Call Trace: [worker_thread+534/960] worker_thread+0x216/0x3c0 [__crc_utf8_wctomb+5448167/6417782] uk_task+0x0/0x160 [uk] [default_wake_function+0/32] default_wake_function+0x0/0x20 [ret_from_fork+6/20] ret_from_fork+0x6/0x14 [default_wake_function+0/32] default_wake_function+0x0/0x20 [worker_thread+0/960] worker_thread+0x0/0x3c0 [kernel_thread_helper+5/24] kernel_thread_helper+0x5/0x18
Code: 8b 43 64 c7 04 24 a0 36 82 f8 89 44 24 04 e8 73 10 90 c7 83
---
void my_task(void *arg) { struct nlmsghdr *nlh; int size; size = NLMSG_SPACE(256); /* nlmsghdr + 256 */ struct sk_buff *skb = alloc_skb(size, GFP_ATOMIC); if (!skb) return; NLMSG_PUT(skb, 0, 0, MY_NOTIF, 0); NETLINK_CB(skb).dst_groups = MYGRP; netlink_broadcast(uknl, skb, 0, MYGRP, GFP_ATOMIC); return; nlmsg_failure: skb_trim(skb, skb->tail - skb->data); }
- : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html