X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=net%2Fnetlink%2Fgenetlink.c;h=1781d99145e2d2594fc961e1a2fc9307aad957a5;hb=169ed55bd30305b933f52bfab32a58671d44ab68;hp=26ed3e8587c20f13a22c7aa2e2abf91dedf3d62a;hpb=994b384a040d6f8afc3595c1a99c1b784e0cce49;p=karo-tx-linux.git diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c index 26ed3e8587c2..1781d99145e2 100644 --- a/net/netlink/genetlink.c +++ b/net/netlink/genetlink.c @@ -547,8 +547,20 @@ static int genl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) info.userhdr = nlmsg_data(nlh) + GENL_HDRLEN; info.attrs = family->attrbuf; genl_info_net_set(&info, net); + memset(&info.user_ptr, 0, sizeof(info.user_ptr)); - return ops->doit(skb, &info); + if (family->pre_doit) { + err = family->pre_doit(ops, skb, &info); + if (err) + return err; + } + + err = ops->doit(skb, &info); + + if (family->post_doit) + family->post_doit(ops, skb, &info); + + return err; } static void genl_rcv(struct sk_buff *skb)