diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2012-01-30 15:22:06 -0500 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2012-01-30 15:22:06 -0500 | 
| commit | a46621a3a8f24557201a7ef62de151c812f8985c (patch) | |
| tree | 9701dd51e082d600ce4b69ee4773805630ab0ada | |
| parent | 5de658f878d49e952d7b3f3f26a396132829f513 (diff) | |
| download | olio-linux-3.10-a46621a3a8f24557201a7ef62de151c812f8985c.tar.xz olio-linux-3.10-a46621a3a8f24557201a7ef62de151c812f8985c.zip  | |
net: Deinline __nlmsg_put and genlmsg_put. -7k code on i386 defconfig.
   text	   data	    bss	    dec	    hex	filename
8455963	 532732	1810804	10799499 a4c98b	vmlinux.o.before
8448899	 532732	1810804	10792435 a4adf3	vmlinux.o
This change also removes commented-out copy of __nlmsg_put
which was last touched in 2005 with "Enable once all users
have been converted" comment on top.
Changes in v2: rediffed against net-next.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | include/linux/netlink.h | 18 | ||||
| -rw-r--r-- | include/net/genetlink.h | 31 | ||||
| -rw-r--r-- | include/net/netlink.h | 35 | ||||
| -rw-r--r-- | net/netlink/af_netlink.c | 18 | ||||
| -rw-r--r-- | net/netlink/genetlink.c | 31 | 
5 files changed, 53 insertions, 80 deletions
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index 52e48959cfa..a390e9d5482 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h @@ -237,22 +237,8 @@ struct netlink_notify {  	int protocol;  }; -static __inline__ struct nlmsghdr * -__nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags) -{ -	struct nlmsghdr *nlh; -	int size = NLMSG_LENGTH(len); - -	nlh = (struct nlmsghdr*)skb_put(skb, NLMSG_ALIGN(size)); -	nlh->nlmsg_type = type; -	nlh->nlmsg_len = size; -	nlh->nlmsg_flags = flags; -	nlh->nlmsg_pid = pid; -	nlh->nlmsg_seq = seq; -	if (!__builtin_constant_p(size) || NLMSG_ALIGN(size) - size != 0) -		memset(NLMSG_DATA(nlh) + len, 0, NLMSG_ALIGN(size) - size); -	return nlh; -} +struct nlmsghdr * +__nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags);  #define NLMSG_NEW(skb, pid, seq, type, len, flags) \  ({	if (unlikely(skb_tailroom(skb) < (int)NLMSG_SPACE(len))) \ diff --git a/include/net/genetlink.h b/include/net/genetlink.h index 7db32995ccd..ccb68880abf 100644 --- a/include/net/genetlink.h +++ b/include/net/genetlink.h @@ -131,35 +131,8 @@ extern void genl_unregister_mc_group(struct genl_family *family,  extern void genl_notify(struct sk_buff *skb, struct net *net, u32 pid,  			u32 group, struct nlmsghdr *nlh, gfp_t flags); -/** - * genlmsg_put - Add generic netlink header to netlink message - * @skb: socket buffer holding the message - * @pid: netlink pid the message is addressed to - * @seq: sequence number (usually the one of the sender) - * @family: generic netlink family - * @flags netlink message flags - * @cmd: generic netlink command - * - * Returns pointer to user specific header - */ -static inline void *genlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, -				struct genl_family *family, int flags, u8 cmd) -{ -	struct nlmsghdr *nlh; -	struct genlmsghdr *hdr; - -	nlh = nlmsg_put(skb, pid, seq, family->id, GENL_HDRLEN + -			family->hdrsize, flags); -	if (nlh == NULL) -		return NULL; - -	hdr = nlmsg_data(nlh); -	hdr->cmd = cmd; -	hdr->version = family->version; -	hdr->reserved = 0; - -	return (char *) hdr + GENL_HDRLEN; -} +void *genlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, +				struct genl_family *family, int flags, u8 cmd);  /**   * genlmsg_nlhdr - Obtain netlink header from user specified header diff --git a/include/net/netlink.h b/include/net/netlink.h index cb1f3504687..f394fe5d764 100644 --- a/include/net/netlink.h +++ b/include/net/netlink.h @@ -441,41 +441,6 @@ static inline int nlmsg_report(const struct nlmsghdr *nlh)  	nla_for_each_attr(pos, nlmsg_attrdata(nlh, hdrlen), \  			  nlmsg_attrlen(nlh, hdrlen), rem) -#if 0 -/* FIXME: Enable once all users have been converted */ - -/** - * __nlmsg_put - Add a new netlink message to an skb - * @skb: socket buffer to store message in - * @pid: netlink process id - * @seq: sequence number of message - * @type: message type - * @payload: length of message payload - * @flags: message flags - * - * The caller is responsible to ensure that the skb provides enough - * tailroom for both the netlink header and payload. - */ -static inline struct nlmsghdr *__nlmsg_put(struct sk_buff *skb, u32 pid, -					   u32 seq, int type, int payload, -					   int flags) -{ -	struct nlmsghdr *nlh; - -	nlh = (struct nlmsghdr *) skb_put(skb, nlmsg_total_size(payload)); -	nlh->nlmsg_type = type; -	nlh->nlmsg_len = nlmsg_msg_size(payload); -	nlh->nlmsg_flags = flags; -	nlh->nlmsg_pid = pid; -	nlh->nlmsg_seq = seq; - -	memset((unsigned char *) nlmsg_data(nlh) + payload, 0, -	       nlmsg_padlen(payload)); - -	return nlh; -} -#endif -  /**   * nlmsg_put - Add a new netlink message to an skb   * @skb: socket buffer to store message in diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 629b06182f3..4d751e3d4b4 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -1645,6 +1645,24 @@ static void netlink_destroy_callback(struct netlink_callback *cb)  	kfree(cb);  } +struct nlmsghdr * +__nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags) +{ +	struct nlmsghdr *nlh; +	int size = NLMSG_LENGTH(len); + +	nlh = (struct nlmsghdr*)skb_put(skb, NLMSG_ALIGN(size)); +	nlh->nlmsg_type = type; +	nlh->nlmsg_len = size; +	nlh->nlmsg_flags = flags; +	nlh->nlmsg_pid = pid; +	nlh->nlmsg_seq = seq; +	if (!__builtin_constant_p(size) || NLMSG_ALIGN(size) - size != 0) +		memset(NLMSG_DATA(nlh) + len, 0, NLMSG_ALIGN(size) - size); +	return nlh; +} +EXPORT_SYMBOL(__nlmsg_put); +  /*   * It looks a bit ugly.   * It would be better to create kernel thread. diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c index c29d2568c9e..a1154717219 100644 --- a/net/netlink/genetlink.c +++ b/net/netlink/genetlink.c @@ -498,6 +498,37 @@ int genl_unregister_family(struct genl_family *family)  }  EXPORT_SYMBOL(genl_unregister_family); +/** + * genlmsg_put - Add generic netlink header to netlink message + * @skb: socket buffer holding the message + * @pid: netlink pid the message is addressed to + * @seq: sequence number (usually the one of the sender) + * @family: generic netlink family + * @flags netlink message flags + * @cmd: generic netlink command + * + * Returns pointer to user specific header + */ +void *genlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, +				struct genl_family *family, int flags, u8 cmd) +{ +	struct nlmsghdr *nlh; +	struct genlmsghdr *hdr; + +	nlh = nlmsg_put(skb, pid, seq, family->id, GENL_HDRLEN + +			family->hdrsize, flags); +	if (nlh == NULL) +		return NULL; + +	hdr = nlmsg_data(nlh); +	hdr->cmd = cmd; +	hdr->version = family->version; +	hdr->reserved = 0; + +	return (char *) hdr + GENL_HDRLEN; +} +EXPORT_SYMBOL(genlmsg_put); +  static int genl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)  {  	struct genl_ops *ops;  |