diff options
Diffstat (limited to 'drivers/infiniband/core/netlink.c')
| -rw-r--r-- | drivers/infiniband/core/netlink.c | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/drivers/infiniband/core/netlink.c b/drivers/infiniband/core/netlink.c index da06abde9e0..9227f4acd79 100644 --- a/drivers/infiniband/core/netlink.c +++ b/drivers/infiniband/core/netlink.c | |||
| @@ -32,7 +32,6 @@ | |||
| 32 | 32 | ||
| 33 | #define pr_fmt(fmt) "%s:%s: " fmt, KBUILD_MODNAME, __func__ | 33 | #define pr_fmt(fmt) "%s:%s: " fmt, KBUILD_MODNAME, __func__ |
| 34 | 34 | ||
| 35 | #include <linux/export.h> | ||
| 36 | #include <net/netlink.h> | 35 | #include <net/netlink.h> |
| 37 | #include <net/net_namespace.h> | 36 | #include <net/net_namespace.h> |
| 38 | #include <net/sock.h> | 37 | #include <net/sock.h> |
| @@ -108,14 +107,12 @@ void *ibnl_put_msg(struct sk_buff *skb, struct nlmsghdr **nlh, int seq, | |||
| 108 | unsigned char *prev_tail; | 107 | unsigned char *prev_tail; |
| 109 | 108 | ||
| 110 | prev_tail = skb_tail_pointer(skb); | 109 | prev_tail = skb_tail_pointer(skb); |
| 111 | *nlh = nlmsg_put(skb, 0, seq, RDMA_NL_GET_TYPE(client, op), | 110 | *nlh = NLMSG_NEW(skb, 0, seq, RDMA_NL_GET_TYPE(client, op), |
| 112 | len, NLM_F_MULTI); | 111 | len, NLM_F_MULTI); |
| 113 | if (!*nlh) | ||
| 114 | goto out_nlmsg_trim; | ||
| 115 | (*nlh)->nlmsg_len = skb_tail_pointer(skb) - prev_tail; | 112 | (*nlh)->nlmsg_len = skb_tail_pointer(skb) - prev_tail; |
| 116 | return nlmsg_data(*nlh); | 113 | return NLMSG_DATA(*nlh); |
| 117 | 114 | ||
| 118 | out_nlmsg_trim: | 115 | nlmsg_failure: |
| 119 | nlmsg_trim(skb, prev_tail); | 116 | nlmsg_trim(skb, prev_tail); |
| 120 | return NULL; | 117 | return NULL; |
| 121 | } | 118 | } |
| @@ -127,8 +124,7 @@ int ibnl_put_attr(struct sk_buff *skb, struct nlmsghdr *nlh, | |||
| 127 | unsigned char *prev_tail; | 124 | unsigned char *prev_tail; |
| 128 | 125 | ||
| 129 | prev_tail = skb_tail_pointer(skb); | 126 | prev_tail = skb_tail_pointer(skb); |
| 130 | if (nla_put(skb, type, len, data)) | 127 | NLA_PUT(skb, type, len, data); |
| 131 | goto nla_put_failure; | ||
| 132 | nlh->nlmsg_len += skb_tail_pointer(skb) - prev_tail; | 128 | nlh->nlmsg_len += skb_tail_pointer(skb) - prev_tail; |
| 133 | return 0; | 129 | return 0; |
| 134 | 130 | ||
| @@ -150,14 +146,9 @@ static int ibnl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) | |||
| 150 | if (op < 0 || op >= client->nops || | 146 | if (op < 0 || op >= client->nops || |
| 151 | !client->cb_table[RDMA_NL_GET_OP(op)].dump) | 147 | !client->cb_table[RDMA_NL_GET_OP(op)].dump) |
| 152 | return -EINVAL; | 148 | return -EINVAL; |
| 153 | 149 | return netlink_dump_start(nls, skb, nlh, | |
| 154 | { | 150 | client->cb_table[op].dump, |
| 155 | struct netlink_dump_control c = { | 151 | NULL, 0); |
| 156 | .dump = client->cb_table[op].dump, | ||
| 157 | .module = client->cb_table[op].module, | ||
| 158 | }; | ||
| 159 | return netlink_dump_start(nls, skb, nlh, &c); | ||
| 160 | } | ||
| 161 | } | 152 | } |
| 162 | } | 153 | } |
| 163 | 154 | ||
| @@ -174,11 +165,8 @@ static void ibnl_rcv(struct sk_buff *skb) | |||
| 174 | 165 | ||
| 175 | int __init ibnl_init(void) | 166 | int __init ibnl_init(void) |
| 176 | { | 167 | { |
| 177 | struct netlink_kernel_cfg cfg = { | 168 | nls = netlink_kernel_create(&init_net, NETLINK_RDMA, 0, ibnl_rcv, |
| 178 | .input = ibnl_rcv, | 169 | NULL, THIS_MODULE); |
| 179 | }; | ||
| 180 | |||
| 181 | nls = netlink_kernel_create(&init_net, NETLINK_RDMA, &cfg); | ||
| 182 | if (!nls) { | 170 | if (!nls) { |
| 183 | pr_warn("Failed to create netlink socket\n"); | 171 | pr_warn("Failed to create netlink socket\n"); |
| 184 | return -ENOMEM; | 172 | return -ENOMEM; |
