On Fri, 30 Jun 2017 17:51:30 +0100 Ferruh Yigit <ferruh.yi...@intel.com> wrote:
> +static struct mutex sync_lock; > + > +static void nl_recv(struct sk_buff *skb) > +{ > + struct nlmsghdr *nlh; > + struct unci_nl_msg nl_msg; > + > + nlh = (struct nlmsghdr *)skb->data; > + > + memcpy(&nl_msg, NLMSG_DATA(nlh), sizeof(struct unci_nl_msg)); > + pr_debug("CMD: %u\n", nl_msg.cmd_id); > +} > + > +static struct netlink_kernel_cfg cfg = { > + .input = nl_recv, > +}; > + > +void unci_nl_init(void) > +{ > + nl_sock = netlink_kernel_create(&init_net, UNCI_NL_GRP, &cfg); > + mutex_init(&sync_lock); > +} What if netlink socket create fails? Also, don't need to call mutex_init if you use simpler initailizer. static DEFINE_MUTEX(sync_lock);