summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authortongzongzhen <[email protected]>2024-06-20 16:42:37 +0800
committertongzongzhen <[email protected]>2024-06-20 16:42:37 +0800
commitd78bcf4f82b40edc3de8391fac81ba56033434b5 (patch)
tree85ad5ef54a7ef6858274f925e6998da96336cad6 /service
parenta0b9e2713d014ae5293f5fb207dddbd3a6da47d9 (diff)
fix dev instance create function memory leak
Diffstat (limited to 'service')
-rw-r--r--service/src/vdev.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/service/src/vdev.c b/service/src/vdev.c
index f8ec387..4591556 100644
--- a/service/src/vdev.c
+++ b/service/src/vdev.c
@@ -109,10 +109,10 @@ static int vdev_instance_create_handler(const struct rte_mp_msg * msg, const voi
struct ctrl_msg_vdev_open_request * msg_req = (struct ctrl_msg_vdev_open_request *)msg->param;
/* prepare the response message */
- struct rte_mp_msg * msg_rep = ZMALLOC(sizeof(struct rte_mp_msg));
- snprintf(msg_rep->name, sizeof(msg_rep->name) - 1, "%s", msg->name);
- msg_rep->len_param = sizeof(struct ctrl_msg_vdev_open_response);
- struct ctrl_msg_vdev_open_response * vdev_open_rep = (struct ctrl_msg_vdev_open_response *)msg_rep->param;
+ struct rte_mp_msg msg_rep = {};
+ snprintf(msg_rep.name, sizeof(msg_rep.name), "%s", msg->name);
+ msg_rep.len_param = sizeof(struct ctrl_msg_vdev_open_response);
+ struct ctrl_msg_vdev_open_response * vdev_open_rep = (struct ctrl_msg_vdev_open_response *)msg_rep.param;
/* app object and other handlers */
struct app * app_object = app_lookup_by_symbol(sc_main_get(), (const char *)msg_req->appsym);
@@ -154,13 +154,12 @@ static int vdev_instance_create_handler(const struct rte_mp_msg * msg, const voi
/* get the notify structure, and transfer the eventfd used in app */
struct vnode_cons_notify * notify_ctx = vnode_mirror_notify_ctx_cons(vdi->vnode_rx_cons);
+ msg_rep.num_fds = msg_req->nr_rxstream;
for (unsigned int i = 0; i < msg_req->nr_rxstream; i++)
{
- msg_rep->fds[i] = notify_ctx[i].cons_notify_eventfd;
+ msg_rep.fds[i] = notify_ctx[i].cons_notify_eventfd;
}
- msg_rep->num_fds = msg_req->nr_rxstream;
-
/* VDI申请成功 */
vdev_open_rep->ptr_vdi = (uint64_t)vdi;
vdev_open_rep->nr_rxstream = msg_req->nr_rxstream;
@@ -180,7 +179,7 @@ static int vdev_instance_create_handler(const struct rte_mp_msg * msg, const voi
TAILQ_INSERT_TAIL(&vdev_main_pme->vdi_list, vdi, next);
out:
- rte_mp_reply(msg_rep, peer);
+ rte_mp_reply(&msg_rep, peer);
return 0;
}
@@ -245,9 +244,10 @@ int vdev_dump(struct sc_main * sc)
char str_vdev_info[2048];
int len = snprintf(str_vdev_info, sizeof(str_vdev_info),
- "virtual device, name=%s, rx_thread_count=%d, tx_thread_count=%d, rx_ring_size=%d, tx_ring_size=%d, max_inflight=%d",
- _vdev_iter->vdev.symbol, _vdev_iter->nr_rxstream, _vdev_iter->nr_txstream, _vdev_iter->sz_rx_tunnel,
- _vdev_iter->sz_tx_tunnel, _vdev_iter->sz_max_inflight);
+ "virtual device, name=%s, rx_thread_count=%d, tx_thread_count=%d, rx_ring_size=%d, "
+ "tx_ring_size=%d, max_inflight=%d",
+ _vdev_iter->vdev.symbol, _vdev_iter->nr_rxstream, _vdev_iter->nr_txstream,
+ _vdev_iter->sz_rx_tunnel, _vdev_iter->sz_tx_tunnel, _vdev_iter->sz_max_inflight);
/* IP地址没有配置,忽略IP类信息的输出 */
if (_vdev_iter->vdev.in_addr.s_addr != 0)