diff options
| author | tongzongzhen <[email protected]> | 2024-06-20 16:42:37 +0800 |
|---|---|---|
| committer | tongzongzhen <[email protected]> | 2024-06-20 16:42:37 +0800 |
| commit | d78bcf4f82b40edc3de8391fac81ba56033434b5 (patch) | |
| tree | 85ad5ef54a7ef6858274f925e6998da96336cad6 /service/src | |
| parent | a0b9e2713d014ae5293f5fb207dddbd3a6da47d9 (diff) | |
fix dev instance create function memory leak
Diffstat (limited to 'service/src')
| -rw-r--r-- | service/src/vdev.c | 22 |
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) |
