mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
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>
This commit is contained in:
parent
5de658f878
commit
a46621a3a8
5 changed files with 53 additions and 80 deletions
|
@ -237,22 +237,8 @@ struct netlink_notify {
|
||||||
int protocol;
|
int protocol;
|
||||||
};
|
};
|
||||||
|
|
||||||
static __inline__ struct nlmsghdr *
|
struct nlmsghdr *
|
||||||
__nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags)
|
__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;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define NLMSG_NEW(skb, pid, seq, type, len, flags) \
|
#define NLMSG_NEW(skb, pid, seq, type, len, flags) \
|
||||||
({ if (unlikely(skb_tailroom(skb) < (int)NLMSG_SPACE(len))) \
|
({ if (unlikely(skb_tailroom(skb) < (int)NLMSG_SPACE(len))) \
|
||||||
|
|
|
@ -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,
|
extern void genl_notify(struct sk_buff *skb, struct net *net, u32 pid,
|
||||||
u32 group, struct nlmsghdr *nlh, gfp_t flags);
|
u32 group, struct nlmsghdr *nlh, gfp_t flags);
|
||||||
|
|
||||||
/**
|
void *genlmsg_put(struct sk_buff *skb, u32 pid, u32 seq,
|
||||||
* genlmsg_put - Add generic netlink header to netlink message
|
struct genl_family *family, int flags, u8 cmd);
|
||||||
* @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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* genlmsg_nlhdr - Obtain netlink header from user specified header
|
* genlmsg_nlhdr - Obtain netlink header from user specified header
|
||||||
|
|
|
@ -441,41 +441,6 @@ static inline int nlmsg_report(const struct nlmsghdr *nlh)
|
||||||
nla_for_each_attr(pos, nlmsg_attrdata(nlh, hdrlen), \
|
nla_for_each_attr(pos, nlmsg_attrdata(nlh, hdrlen), \
|
||||||
nlmsg_attrlen(nlh, hdrlen), rem)
|
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
|
* nlmsg_put - Add a new netlink message to an skb
|
||||||
* @skb: socket buffer to store message in
|
* @skb: socket buffer to store message in
|
||||||
|
|
|
@ -1645,6 +1645,24 @@ static void netlink_destroy_callback(struct netlink_callback *cb)
|
||||||
kfree(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 looks a bit ugly.
|
||||||
* It would be better to create kernel thread.
|
* It would be better to create kernel thread.
|
||||||
|
|
|
@ -498,6 +498,37 @@ int genl_unregister_family(struct genl_family *family)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(genl_unregister_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)
|
static int genl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
|
||||||
{
|
{
|
||||||
struct genl_ops *ops;
|
struct genl_ops *ops;
|
||||||
|
|
Loading…
Reference in a new issue