]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - net/decnet/netfilter/dn_rtmsg.c
[NETLINK]: Introduce nlmsg_hdr() helper
[mirror_ubuntu-bionic-kernel.git] / net / decnet / netfilter / dn_rtmsg.c
index 16a5a31e212684b1d4738c5f2d9629871d938d3c..9e8256a2361e4665e4f1e4d8548c7d8976bafff3 100644 (file)
@@ -33,7 +33,7 @@ static struct sk_buff *dnrmg_build_message(struct sk_buff *rt_skb, int *errp)
 {
        struct sk_buff *skb = NULL;
        size_t size;
-       unsigned char *old_tail;
+       sk_buff_data_t old_tail;
        struct nlmsghdr *nlh;
        unsigned char *ptr;
        struct nf_dn_rtmsg *rtm;
@@ -102,12 +102,12 @@ static unsigned int dnrmg_hook(unsigned int hook,
 
 static inline void dnrmg_receive_user_skb(struct sk_buff *skb)
 {
-       struct nlmsghdr *nlh = (struct nlmsghdr *)skb->data;
+       struct nlmsghdr *nlh = nlmsg_hdr(skb);
 
        if (nlh->nlmsg_len < sizeof(*nlh) || skb->len < nlh->nlmsg_len)
                return;
 
-       if (!cap_raised(NETLINK_CB(skb).eff_cap, CAP_NET_ADMIN))
+       if (security_netlink_recv(skb, CAP_NET_ADMIN))
                RCV_SKB_FAIL(-EPERM);
 
        /* Eventually we might send routing messages too */
@@ -133,12 +133,12 @@ static struct nf_hook_ops dnrmg_ops = {
        .priority       = NF_DN_PRI_DNRTMSG,
 };
 
-static int __init init(void)
+static int __init dn_rtmsg_init(void)
 {
        int rv = 0;
 
        dnrmg = netlink_kernel_create(NETLINK_DNRTMSG, DNRNG_NLGRP_MAX,
-                                     dnrmg_receive_user_sk, THIS_MODULE);
+                                     dnrmg_receive_user_sk, THIS_MODULE);
        if (dnrmg == NULL) {
                printk(KERN_ERR "dn_rtmsg: Cannot create netlink socket");
                return -ENOMEM;
@@ -152,7 +152,7 @@ static int __init init(void)
        return rv;
 }
 
-static void __exit fini(void)
+static void __exit dn_rtmsg_fini(void)
 {
        nf_unregister_hook(&dnrmg_ops);
        sock_release(dnrmg->sk_socket);
@@ -164,6 +164,6 @@ MODULE_AUTHOR("Steven Whitehouse <steve@chygwyn.com>");
 MODULE_LICENSE("GPL");
 MODULE_ALIAS_NET_PF_PROTO(PF_NETLINK, NETLINK_DNRTMSG);
 
-module_init(init);
-module_exit(fini);
+module_init(dn_rtmsg_init);
+module_exit(dn_rtmsg_fini);