Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Tools: hv: use single send+recv buffer

send_buffer is used only once during registration. To reduce runtime
memory usage reuse the recv_buffer for registration. Also use
NLMSG_LENGTH instead of NLMSG_HDRLEN to take alignment into account.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Olaf Hering and committed by
Greg Kroah-Hartman
269ce62b 58125210

+7 -11
+4 -6
tools/hv/hv_kvp_daemon.c
··· 1434 1434 int pool; 1435 1435 char *if_name; 1436 1436 struct hv_kvp_ipaddr_value *kvp_ip_val; 1437 - char *kvp_send_buffer; 1438 1437 char *kvp_recv_buffer; 1439 1438 size_t kvp_recv_buffer_len; 1440 1439 ··· 1442 1443 openlog("KVP", 0, LOG_USER); 1443 1444 syslog(LOG_INFO, "KVP starting; pid is:%d", getpid()); 1444 1445 1445 - kvp_recv_buffer_len = NLMSG_HDRLEN + sizeof(struct cn_msg) + sizeof(struct hv_kvp_msg); 1446 - kvp_send_buffer = calloc(1, kvp_recv_buffer_len); 1446 + kvp_recv_buffer_len = NLMSG_LENGTH(0) + sizeof(struct cn_msg) + sizeof(struct hv_kvp_msg); 1447 1447 kvp_recv_buffer = calloc(1, kvp_recv_buffer_len); 1448 - if (!(kvp_send_buffer && kvp_recv_buffer)) { 1449 - syslog(LOG_ERR, "Failed to allocate netlink buffers"); 1448 + if (!kvp_recv_buffer) { 1449 + syslog(LOG_ERR, "Failed to allocate netlink buffer"); 1450 1450 exit(EXIT_FAILURE); 1451 1451 } 1452 1452 /* ··· 1492 1494 /* 1493 1495 * Register ourselves with the kernel. 1494 1496 */ 1495 - message = (struct cn_msg *)kvp_send_buffer; 1497 + message = (struct cn_msg *)kvp_recv_buffer; 1496 1498 message->id.idx = CN_KVP_IDX; 1497 1499 message->id.val = CN_KVP_VAL; 1498 1500
+3 -5
tools/hv/hv_vss_daemon.c
··· 140 140 struct cn_msg *incoming_cn_msg; 141 141 int op; 142 142 struct hv_vss_msg *vss_msg; 143 - char *vss_send_buffer; 144 143 char *vss_recv_buffer; 145 144 size_t vss_recv_buffer_len; 146 145 ··· 149 150 openlog("Hyper-V VSS", 0, LOG_USER); 150 151 syslog(LOG_INFO, "VSS starting; pid is:%d", getpid()); 151 152 152 - vss_recv_buffer_len = NLMSG_HDRLEN + sizeof(struct cn_msg) + sizeof(struct hv_vss_msg); 153 - vss_send_buffer = calloc(1, vss_recv_buffer_len); 153 + vss_recv_buffer_len = NLMSG_LENGTH(0) + sizeof(struct cn_msg) + sizeof(struct hv_vss_msg); 154 154 vss_recv_buffer = calloc(1, vss_recv_buffer_len); 155 - if (!(vss_send_buffer && vss_recv_buffer)) { 155 + if (!vss_recv_buffer) { 156 156 syslog(LOG_ERR, "Failed to allocate netlink buffers"); 157 157 exit(EXIT_FAILURE); 158 158 } ··· 183 185 /* 184 186 * Register ourselves with the kernel. 185 187 */ 186 - message = (struct cn_msg *)vss_send_buffer; 188 + message = (struct cn_msg *)vss_recv_buffer; 187 189 message->id.idx = CN_VSS_IDX; 188 190 message->id.val = CN_VSS_VAL; 189 191 message->ack = 0;