<div dir="ltr">I have written a kernel module and userspace program which use a netlink socket to communicate (full source here: <a href="https://github.com/akshayknarayan/netlink-test" target="_blank">https://github.com/<wbr>akshayknarayan/netlink-test</a>). The kernel module periodically multicasts a message, and the userspace program listens on the socket.<div><br></div><div>Relevant source snippets:</div><div>Kernel module:</div><div><div> 43     res = nlmsg_multicast(</div><div> 44             nl_sk,     // @sk: netlink socket to spread messages to</div><div> 45             skb_out,   // @skb: netlink message as socket buffer</div><div> 46             0,         // @portid: own netlink portid to avoid sending to yourself</div><div> 47             MYMGRP,    // @group: multicast group id</div><div> 48             GFP_KERNEL // @flags: allocation flags</div><div> 49     );</div><div> 50     if (res &lt; 0) {</div><div> 51         printk(KERN_INFO &quot;Error while sending to user: %d\n&quot;, res);</div><div> 52     } else {</div><div> 53         mod_timer(&amp;timer, jiffies + msecs_to_jiffies(1));</div><div> 54         printk(KERN_INFO &quot;Send ok\n&quot;);</div><div> 55     }</div></div><div><br></div><div>Userspace program:</div><div> 39 void nl_recv(int sock) {<br></div><div>...</div><div><div> 54     ret = recvmsg(sock, &amp;msg, 0);</div><div> 55     if (ret &lt; 0)</div><div> 56         printf(&quot;ret &lt; 0.\n&quot;);</div><div> 57     else</div><div> 58         printf(&quot;received message payload: %s\n&quot;, (char*) NLMSG_DATA((struct nlmsghdr *) &amp;buffer));</div></div><div> 59 }<br></div><div><div> 60</div><div> 61 int main(int argc, char *argv[]) {</div></div><div>...</div><div><div> 69     while (1) {</div><div> 70         nl_recv(nls);</div><div> 71         sleep(1);</div><div> 72         count++;</div><div> 73     }</div></div><div><br></div><div>If the call to sleep is removed, there is no issue. However, with the call, on kernel 4.10 the kernel hangs after the kernel module is loaded. There&#39;s no relevant information in /var/log/syslog after reboot.</div><div><br></div><div>It seems that some netlink buffer is getting filled, but in this case I would expect nlmsg_multicast to return ENOBUFS.</div><div><br></div><div>Thanks,</div><div>Akshay</div><div><br></div></div>