]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/netlink/genetlink.c
Merge tag 'v2.6.37' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / net / netlink / genetlink.c
index 26ed3e8587c20f13a22c7aa2e2abf91dedf3d62a..1781d99145e2d2594fc961e1a2fc9307aad957a5 100644 (file)
@@ -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)