mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 13:51:44 +00:00
RDMA/iwpm: Properly mark end of NL messages
Commit1a1c116f3d
removes nlmsg_len calculation in ibnl_put_attr causing netlink messages to be rejected due to incorrect length. Add nlmsg_end after all attributes are appended to calculate the nlmsg_len. Fixes:1a1c116f3d
("RDMA/netlink: Simplify the put_msg and put_attr") Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com> Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com> Reviewed-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
828bcbdc97
commit
04eae42740
@ -100,6 +100,8 @@ int iwpm_register_pid(struct iwpm_dev_data *pm_msg, u8 nl_client)
|
||||
if (ret)
|
||||
goto pid_query_error;
|
||||
|
||||
nlmsg_end(skb, nlh);
|
||||
|
||||
pr_debug("%s: Multicasting a nlmsg (dev = %s ifname = %s iwpm = %s)\n",
|
||||
__func__, pm_msg->dev_name, pm_msg->if_name, iwpm_ulib_name);
|
||||
|
||||
@ -170,6 +172,8 @@ int iwpm_add_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client)
|
||||
&pm_msg->loc_addr, IWPM_NLA_MANAGE_ADDR);
|
||||
if (ret)
|
||||
goto add_mapping_error;
|
||||
|
||||
nlmsg_end(skb, nlh);
|
||||
nlmsg_request->req_buffer = pm_msg;
|
||||
|
||||
ret = rdma_nl_unicast_wait(skb, iwpm_user_pid);
|
||||
@ -246,6 +250,8 @@ int iwpm_add_and_query_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client)
|
||||
&pm_msg->rem_addr, IWPM_NLA_QUERY_REMOTE_ADDR);
|
||||
if (ret)
|
||||
goto query_mapping_error;
|
||||
|
||||
nlmsg_end(skb, nlh);
|
||||
nlmsg_request->req_buffer = pm_msg;
|
||||
|
||||
ret = rdma_nl_unicast_wait(skb, iwpm_user_pid);
|
||||
@ -308,6 +314,8 @@ int iwpm_remove_mapping(struct sockaddr_storage *local_addr, u8 nl_client)
|
||||
if (ret)
|
||||
goto remove_mapping_error;
|
||||
|
||||
nlmsg_end(skb, nlh);
|
||||
|
||||
ret = rdma_nl_unicast_wait(skb, iwpm_user_pid);
|
||||
if (ret) {
|
||||
skb = NULL; /* skb is freed in the netlink send-op handling */
|
||||
|
@ -597,6 +597,9 @@ static int send_mapinfo_num(u32 mapping_num, u8 nl_client, int iwpm_pid)
|
||||
&mapping_num, IWPM_NLA_MAPINFO_SEND_NUM);
|
||||
if (ret)
|
||||
goto mapinfo_num_error;
|
||||
|
||||
nlmsg_end(skb, nlh);
|
||||
|
||||
ret = rdma_nl_unicast(skb, iwpm_pid);
|
||||
if (ret) {
|
||||
skb = NULL;
|
||||
@ -678,6 +681,8 @@ int iwpm_send_mapinfo(u8 nl_client, int iwpm_pid)
|
||||
if (ret)
|
||||
goto send_mapping_info_unlock;
|
||||
|
||||
nlmsg_end(skb, nlh);
|
||||
|
||||
iwpm_print_sockaddr(&map_info->local_sockaddr,
|
||||
"send_mapping_info: Local sockaddr:");
|
||||
iwpm_print_sockaddr(&map_info->mapped_sockaddr,
|
||||
|
Loading…
Reference in New Issue
Block a user