lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 21 Jun 2017 09:05:11 +0300 From: Leon Romanovsky <leon@...nel.org> To: Doug Ledford <dledford@...hat.com> Cc: linux-rdma@...r.kernel.org, Chien Tin Tung <chien.tin.tung@...el.com>, Steve Wise <swise@...ngridcomputing.com>, Stephen Hemminger <stephen@...workplumber.org>, Jiri Pirko <jiri@...lanox.com>, Ariel Almog <ariela@...lanox.com>, Linux Netdev <netdev@...r.kernel.org>, Leon Romanovsky <leonro@...lanox.com> Subject: [PATCH rdma-next 02/19] RDMA/netlink: Simplify the put_msg and put_attr From: Leon Romanovsky <leonro@...lanox.com> Reuse standard macros to cancel the netlink message in case of error. Signed-off-by: Leon Romanovsky <leonro@...lanox.com> --- drivers/infiniband/core/netlink.c | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/drivers/infiniband/core/netlink.c b/drivers/infiniband/core/netlink.c index f0d482009c69..96057e722123 100644 --- a/drivers/infiniband/core/netlink.c +++ b/drivers/infiniband/core/netlink.c @@ -126,36 +126,23 @@ EXPORT_SYMBOL(rdma_nl_unregister); void *ibnl_put_msg(struct sk_buff *skb, struct nlmsghdr **nlh, int seq, int len, int client, int op, int flags) { - unsigned char *prev_tail; - - prev_tail = skb_tail_pointer(skb); - *nlh = nlmsg_put(skb, 0, seq, RDMA_NL_GET_TYPE(client, op), - len, flags); - if (!*nlh) - goto out_nlmsg_trim; - (*nlh)->nlmsg_len = skb_tail_pointer(skb) - prev_tail; + *nlh = nlmsg_put(skb, 0, seq, RDMA_NL_GET_TYPE(client, op), len, flags); + if (!*nlh) { + nlmsg_cancel(skb, *nlh); + return NULL; + } return nlmsg_data(*nlh); - -out_nlmsg_trim: - nlmsg_trim(skb, prev_tail); - return NULL; } EXPORT_SYMBOL(ibnl_put_msg); int ibnl_put_attr(struct sk_buff *skb, struct nlmsghdr *nlh, int len, void *data, int type) { - unsigned char *prev_tail; - - prev_tail = skb_tail_pointer(skb); - if (nla_put(skb, type, len, data)) - goto nla_put_failure; - nlh->nlmsg_len += skb_tail_pointer(skb) - prev_tail; + if (nla_put(skb, type, len, data)) { + nlmsg_cancel(skb, nlh); + return -EMSGSIZE; + } return 0; - -nla_put_failure: - nlmsg_trim(skb, prev_tail - nlh->nlmsg_len); - return -EMSGSIZE; } EXPORT_SYMBOL(ibnl_put_attr); -- 2.13.1
Powered by blists - more mailing lists