[NETLINK]: Introduce nlmsg_hdr() helper
authorArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 26 Apr 2007 02:08:35 +0000 (19:08 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Thu, 26 Apr 2007 05:26:34 +0000 (22:26 -0700)
For the common "(struct nlmsghdr *)skb->data" sequence, so that we reduce the
number of direct accesses to skb->data and for consistency with all the other
cast skb member helpers.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 files changed:
drivers/connector/connector.c
drivers/scsi/scsi_netlink.c
drivers/scsi/scsi_transport_iscsi.c
fs/ecryptfs/netlink.c
include/linux/netlink.h
kernel/audit.c
kernel/taskstats.c
net/decnet/netfilter/dn_rtmsg.c
net/ipv4/fib_frontend.c
net/ipv4/inet_diag.c
net/ipv4/netfilter/ip_queue.c
net/ipv6/netfilter/ip6_queue.c
net/netlink/af_netlink.c
net/tipc/netlink.c
security/selinux/hooks.c

index a905f782033196259dcdb46b5931701d0a642bad..7f9c4fb7e5b0e12ffc4970274e2d9c0aca6b3076 100644 (file)
@@ -212,7 +212,7 @@ static void cn_rx_skb(struct sk_buff *__skb)
        skb = skb_get(__skb);
 
        if (skb->len >= NLMSG_SPACE(0)) {
-               nlh = (struct nlmsghdr *)skb->data;
+               nlh = nlmsg_hdr(skb);
 
                if (nlh->nlmsg_len < sizeof(struct cn_msg) ||
                    skb->len < nlh->nlmsg_len ||
index 1b59b27e887fd74cf629bbee05ddc76dd906f194..45646a2852442206370b1b548c1efedf5a7dd50c 100644 (file)
@@ -50,7 +50,7 @@ scsi_nl_rcv_msg(struct sk_buff *skb)
        while (skb->len >= NLMSG_SPACE(0)) {
                err = 0;
 
-               nlh = (struct nlmsghdr *) skb->data;
+               nlh = nlmsg_hdr(skb);
                if ((nlh->nlmsg_len < (sizeof(*nlh) + sizeof(*hdr))) ||
                    (skb->len < nlh->nlmsg_len)) {
                        printk(KERN_WARNING "%s: discarding partial skb\n",
index ce0d14af33c86a2e6c51abfa8a6ebc8dd50417ba..10590cd7e9edcd2b9b008345a41dadfe99e23635 100644 (file)
@@ -1081,7 +1081,7 @@ iscsi_if_rx(struct sock *sk, int len)
                        struct nlmsghdr *nlh;
                        struct iscsi_uevent *ev;
 
-                       nlh = (struct nlmsghdr *)skb->data;
+                       nlh = nlmsg_hdr(skb);
                        if (nlh->nlmsg_len < sizeof(*nlh) ||
                            skb->len < nlh->nlmsg_len) {
                                break;
index e3aa2253c8508e1b316a0b3a32e04472cdb51712..8405d216a5fc3750eca0596395f1866963f5bb2a 100644 (file)
@@ -97,7 +97,7 @@ out:
  */
 static int ecryptfs_process_nl_response(struct sk_buff *skb)
 {
-       struct nlmsghdr *nlh = (struct nlmsghdr*)skb->data;
+       struct nlmsghdr *nlh = nlmsg_hdr(skb);
        struct ecryptfs_message *msg = NLMSG_DATA(nlh);
        int rc;
 
@@ -181,7 +181,7 @@ receive:
                                "rc = [%d]\n", rc);
                return;
        }
-       nlh = (struct nlmsghdr *)skb->data;
+       nlh = nlmsg_hdr(skb);
        if (!NLMSG_OK(nlh, skb->len)) {
                ecryptfs_printk(KERN_ERR, "Received corrupt netlink "
                                "message\n");
index 68a632b372ecfb7b12178c38d8dbdbf8e05e6b71..36629fff26d39f5ee2ae18491a60e81dab6fd402 100644 (file)
@@ -138,6 +138,11 @@ struct nlattr
 #include <linux/capability.h>
 #include <linux/skbuff.h>
 
+static inline struct nlmsghdr *nlmsg_hdr(const struct sk_buff *skb)
+{
+       return (struct nlmsghdr *)skb->data;
+}
+
 struct netlink_skb_parms
 {
        struct ucred            creds;          /* Skb credentials      */
index ea8521417d1363a52a6d88b58d6fbd20f3b14dee..80a7457dadbf30d4e7ae5c961152f8b5945efef7 100644 (file)
@@ -151,7 +151,7 @@ struct audit_buffer {
 
 static void audit_set_pid(struct audit_buffer *ab, pid_t pid)
 {
-       struct nlmsghdr *nlh = (struct nlmsghdr *)ab->skb->data;
+       struct nlmsghdr *nlh = nlmsg_hdr(ab->skb);
        nlh->nlmsg_pid = pid;
 }
 
@@ -750,7 +750,7 @@ static void audit_receive_skb(struct sk_buff *skb)
        u32             rlen;
 
        while (skb->len >= NLMSG_SPACE(0)) {
-               nlh = (struct nlmsghdr *)skb->data;
+               nlh = nlmsg_hdr(skb);
                if (nlh->nlmsg_len < sizeof(*nlh) || skb->len < nlh->nlmsg_len)
                        return;
                rlen = NLMSG_ALIGN(nlh->nlmsg_len);
@@ -1268,7 +1268,7 @@ void audit_log_end(struct audit_buffer *ab)
                audit_log_lost("rate limit exceeded");
        } else {
                if (audit_pid) {
-                       struct nlmsghdr *nlh = (struct nlmsghdr *)ab->skb->data;
+                       struct nlmsghdr *nlh = nlmsg_hdr(ab->skb);
                        nlh->nlmsg_len = ab->skb->len - NLMSG_SPACE(0);
                        skb_queue_tail(&audit_skb_queue, ab->skb);
                        ab->skb = NULL;
index 4c3476fa058d5627650779f0559dc17c3a7cb1b8..ad7d2392cb0edd391a62c685d45fadee60e545a8 100644 (file)
@@ -102,7 +102,7 @@ static int prepare_reply(struct genl_info *info, u8 cmd, struct sk_buff **skbp,
  */
 static int send_reply(struct sk_buff *skb, pid_t pid)
 {
-       struct genlmsghdr *genlhdr = nlmsg_data((struct nlmsghdr *)skb->data);
+       struct genlmsghdr *genlhdr = nlmsg_data(nlmsg_hdr(skb));
        void *reply = genlmsg_data(genlhdr);
        int rc;
 
@@ -121,7 +121,7 @@ static int send_reply(struct sk_buff *skb, pid_t pid)
 static void send_cpu_listeners(struct sk_buff *skb,
                                        struct listener_list *listeners)
 {
-       struct genlmsghdr *genlhdr = nlmsg_data((struct nlmsghdr *)skb->data);
+       struct genlmsghdr *genlhdr = nlmsg_data(nlmsg_hdr(skb));
        struct listener *s, *tmp;
        struct sk_buff *skb_next, *skb_cur = skb;
        void *reply = genlmsg_data(genlhdr);
index ceefd9dd0c92c90535c2fc6ee796629eb67bd342..9e8256a2361e4665e4f1e4d8548c7d8976bafff3 100644 (file)
@@ -102,7 +102,7 @@ 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;
index cac06c43f004d269ca58c313853f24548142beba..3ff753c6f1970568ebdaff4b189f1213efa4f5c0 100644 (file)
@@ -807,7 +807,7 @@ static void nl_fib_input(struct sock *sk, int len)
        if (skb == NULL)
                return;
 
-       nlh = (struct nlmsghdr *)skb->data;
+       nlh = nlmsg_hdr(skb);
        if (skb->len < NLMSG_SPACE(0) || skb->len < nlh->nlmsg_len ||
            nlh->nlmsg_len < NLMSG_LENGTH(sizeof(*frn))) {
                kfree_skb(skb);
index 37362cd1d07fd135e5d3468220fa1ca66fa6a49b..238999e6e8718d70db312b8284a6db22b5d71e60 100644 (file)
@@ -847,7 +847,7 @@ static inline void inet_diag_rcv_skb(struct sk_buff *skb)
 {
        if (skb->len >= NLMSG_SPACE(0)) {
                int err;
-               struct nlmsghdr *nlh = (struct nlmsghdr *)skb->data;
+               struct nlmsghdr *nlh = nlmsg_hdr(skb);
 
                if (nlh->nlmsg_len < sizeof(*nlh) ||
                    skb->len < nlh->nlmsg_len)
index 15e0d200223511de282822385ceb4bac3ddfc50a..17f7c988460c8bab02ab800302a477d7d1e5bbe2 100644 (file)
@@ -497,7 +497,7 @@ ipq_rcv_skb(struct sk_buff *skb)
        if (skblen < sizeof(*nlh))
                return;
 
-       nlh = (struct nlmsghdr *)skb->data;
+       nlh = nlmsg_hdr(skb);
        nlmsglen = nlh->nlmsg_len;
        if (nlmsglen < sizeof(*nlh) || skblen < nlmsglen)
                return;
index 5cfce218c5e199d14371ee9a4d4ee80a57efb7ef..275e625e4977f0c52541bf6293a99ba9abdde6ed 100644 (file)
@@ -487,7 +487,7 @@ ipq_rcv_skb(struct sk_buff *skb)
        if (skblen < sizeof(*nlh))
                return;
 
-       nlh = (struct nlmsghdr *)skb->data;
+       nlh = nlmsg_hdr(skb);
        nlmsglen = nlh->nlmsg_len;
        if (nlmsglen < sizeof(*nlh) || skblen < nlmsglen)
                return;
index 50dc5edb7752308f896c87976f5b64052cc9c451..04b72d3c1dea8607ff8ca8f1c957ec1ef8cd7670 100644 (file)
@@ -1471,7 +1471,7 @@ static int netlink_rcv_skb(struct sk_buff *skb, int (*cb)(struct sk_buff *,
        int err;
 
        while (skb->len >= nlmsg_total_size(0)) {
-               nlh = (struct nlmsghdr *) skb->data;
+               nlh = nlmsg_hdr(skb);
 
                if (nlh->nlmsg_len < NLMSG_HDRLEN || skb->len < nlh->nlmsg_len)
                        return 0;
index b8e1edc2badcbff690cecc06adaed983ec874039..4cdafa2d1d4df66d3373b4de29e253720ccad6d6 100644 (file)
@@ -57,7 +57,7 @@ static int handle_cmd(struct sk_buff *skb, struct genl_info *info)
 
        if (rep_buf) {
                skb_push(rep_buf, hdr_space);
-               rep_nlh = (struct nlmsghdr *)rep_buf->data;
+               rep_nlh = nlmsg_hdr(rep_buf);
                memcpy(rep_nlh, req_nlh, hdr_space);
                rep_nlh->nlmsg_len = rep_buf->len;
                genlmsg_unicast(rep_buf, req_nlh->nlmsg_pid);
index addb58501057b0e1268cf60552e851d912030898..5f02b4be191725aef880412c61494a92b8a760a3 100644 (file)
@@ -3786,7 +3786,7 @@ static int selinux_nlmsg_perm(struct sock *sk, struct sk_buff *skb)
                err = -EINVAL;
                goto out;
        }
-       nlh = (struct nlmsghdr *)skb->data;
+       nlh = nlmsg_hdr(skb);
        
        err = selinux_nlmsg_lookup(isec->sclass, nlh->nlmsg_type, &perm);
        if (err) {