: Introduce nlmsg_hdr() helper
Subsystems (11)
PATCH 1/31 : Introduce nlmsg_hdr() helper
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 <[email protected]>
--- drivers/connector/connector.c | 2 +- drivers/scsi/scsi_netlink.c | 2 +- drivers/scsi/scsi_transport_iscsi.c | 2 +- fs/ecryptfs/netlink.c | 4 ++-- include/linux/netlink.h | 5 +++++ kernel/audit.c | 6 +++--- kernel/taskstats.c | 4 ++-- net/decnet/netfilter/dn_rtmsg.c | 2 +- net/ipv4/fib_frontend.c | 2 +- net/ipv4/inet_diag.c | 2 +- net/ipv4/netfilter/ip_queue.c | 2 +- net/ipv6/netfilter/ip6_queue.c | 2 +- net/netlink/af_netlink.c | 2 +- net/tipc/netlink.c | 2 +- security/selinux/hooks.c | 2 +- 15 files changed, 23 insertions(+), 18 deletions(-)
drivers/connector/connector.c +1 -1
@@ -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 ||
drivers/scsi/scsi_netlink.c +1 -1
@@ -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",
drivers/scsi/scsi_transport_iscsi.c +1 -1
@@ -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 ;
fs/ecryptfs/netlink.c +2 -2
@@ -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" );
include/linux/netlink.h +5 -0
@@ -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 */
kernel/audit.c +3 -3
@@ -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 ;
kernel/taskstats.c +2 -2
@@ -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);
net/decnet/netfilter/dn_rtmsg.c +1 -1
@@ -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 ;
net/ipv4/fib_frontend.c +1 -1
@@ -796,7 +796,7 @@ static void nl_fib_input(struct sock *sk, int len)struct fib_table *tb; skb =skb_dequeue (&sk->sk_receive_queue); - 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);
net/ipv4/inet_diag.c +1 -1
@@ -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)
net/ipv4/netfilter/ip_queue.c +1 -1
@@ -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 ;
net/ipv6/netfilter/ip6_queue.c +1 -1
@@ -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 ;
net/netlink/af_netlink.c +1 -1
@@ -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 ;
net/tipc/netlink.c +1 -1
@@ -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);
security/selinux/hooks.c +1 -1
@@ -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) {
Signature · 27 lines
1.5.0.3 Date: Mon, 19 Mar 2007 22:26:45 -0300 Subject: [PATCH 01/31] [NETLINK]: Introduce nlmsg_hdr() helper 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 <[email protected]> --- drivers/connector/connector.c | 2 +- drivers/scsi/scsi_netlink.c | 2 +- drivers/scsi/scsi_transport_iscsi.c | 2 +- fs/ecryptfs/netlink.c | 4 ++-- include/linux/netlink.h | 5 +++++ kernel/audit.c | 6 +++--- kernel/taskstats.c | 4 ++-- net/decnet/netfilter/dn_rtmsg.c | 2 +- net/ipv4/fib_frontend.c | 2 +- net/ipv4/inet_diag.c | 2 +- net/ipv4/netfilter/ip_queue.c | 2 +- net/ipv6/netfilter/ip6_queue.c | 2 +- net/netlink/af_netlink.c | 2 +- net/tipc/netlink.c | 2 +- security/selinux/hooks.c | 2 +- 15 files changed, 23 insertions(+), 18 deletions(-)
drivers/connector/connector.c +1 -1
@@ -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 ||
drivers/scsi/scsi_netlink.c +1 -1
@@ -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",
drivers/scsi/scsi_transport_iscsi.c +1 -1
@@ -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 ;
fs/ecryptfs/netlink.c +2 -2
@@ -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" );
include/linux/netlink.h +5 -0
@@ -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 */
kernel/audit.c +3 -3
@@ -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 ;
kernel/taskstats.c +2 -2
@@ -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);
net/decnet/netfilter/dn_rtmsg.c +1 -1
@@ -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 ;
net/ipv4/fib_frontend.c +1 -1
@@ -796,7 +796,7 @@ static void nl_fib_input(struct sock *sk, int len)struct fib_table *tb; skb =skb_dequeue (&sk->sk_receive_queue); - 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);
net/ipv4/inet_diag.c +1 -1
@@ -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)
net/ipv4/netfilter/ip_queue.c +1 -1
@@ -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 ;
net/ipv6/netfilter/ip6_queue.c +1 -1
@@ -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 ;
net/netlink/af_netlink.c +1 -1
@@ -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 ;
net/tipc/netlink.c +1 -1
@@ -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);
security/selinux/hooks.c +1 -1
@@ -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) {
Signature · 1 line
1.5.0.3