From: Damjan Marion Date: Tue, 15 Apr 2025 07:32:38 +0000 (+0200) Subject: vhost: don't access clib file data directly X-Git-Tag: v25.10-rc0~88 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F95%2F42795%2F3;p=vpp.git vhost: don't access clib file data directly Type: improvement Change-Id: I78d2439e196f095aefc84a36061c9f5fe3cac312 Signed-off-by: Damjan Marion --- diff --git a/src/plugins/vhost/vhost_user.c b/src/plugins/vhost/vhost_user.c index fdee984f97b..4c48c2320cc 100644 --- a/src/plugins/vhost/vhost_user.c +++ b/src/plugins/vhost/vhost_user.c @@ -325,15 +325,13 @@ vhost_user_vring_close (vhost_user_intf_t * vui, u32 qid) if (vring->kickfd_idx != ~0) { - clib_file_t *uf = pool_elt_at_index (file_main.file_pool, - vring->kickfd_idx); + clib_file_t *uf = clib_file_get (&file_main, vring->kickfd_idx); clib_file_del (&file_main, uf); vring->kickfd_idx = ~0; } if (vring->callfd_idx != ~0) { - clib_file_t *uf = pool_elt_at_index (file_main.file_pool, - vring->callfd_idx); + clib_file_t *uf = clib_file_get (&file_main, vring->callfd_idx); clib_file_del (&file_main, uf); vring->callfd_idx = ~0; } @@ -367,7 +365,7 @@ vhost_user_if_disconnect (vhost_user_intf_t * vui) if (vui->clib_file_index != ~0) { - clib_file_del (&file_main, file_main.file_pool + vui->clib_file_index); + clib_file_del_by_index (&file_main, vui->clib_file_index); vui->clib_file_index = ~0; } @@ -750,8 +748,8 @@ vhost_user_socket_read (clib_file_t * uf) /* if there is old fd, delete and close it */ if (vui->vrings[q].callfd_idx != ~0) { - clib_file_t *uf = pool_elt_at_index (file_main.file_pool, - vui->vrings[q].callfd_idx); + clib_file_t *uf = + clib_file_get (&file_main, vui->vrings[q].callfd_idx); clib_file_del (&file_main, uf); vui->vrings[q].callfd_idx = ~0; } @@ -823,8 +821,8 @@ vhost_user_socket_read (clib_file_t * uf) if (vui->vrings[q].kickfd_idx != ~0) { - clib_file_t *uf = pool_elt_at_index (file_main.file_pool, - vui->vrings[q].kickfd_idx); + clib_file_t *uf = + clib_file_get (&file_main, vui->vrings[q].kickfd_idx); clib_file_del (&file_main, uf); vui->vrings[q].kickfd_idx = ~0; } @@ -1148,7 +1146,7 @@ vhost_user_socksvr_accept_ready (clib_file_t * uf) { vu_log_debug (vui, "Close client socket for vhost interface %d, fd %d", vui->sw_if_index, UNIX_GET_FD (vui->clib_file_index)); - clib_file_del (&file_main, file_main.file_pool + vui->clib_file_index); + clib_file_del_by_index (&file_main, vui->clib_file_index); } vu_log_debug (vui, "New client socket for vhost interface %d, fd %d", @@ -1408,8 +1406,7 @@ vhost_user_term_if (vhost_user_intf_t * vui) if (vui->unix_server_index != ~0) { //Close server socket - clib_file_t *uf = pool_elt_at_index (file_main.file_pool, - vui->unix_server_index); + clib_file_t *uf = clib_file_get (&file_main, vui->unix_server_index); clib_file_del (&file_main, uf); vui->unix_server_index = ~0; unlink (vui->sock_filename); diff --git a/src/plugins/vhost/vhost_user.h b/src/plugins/vhost/vhost_user.h index a3582affb4b..fe2ee21a0c4 100644 --- a/src/plugins/vhost/vhost_user.h +++ b/src/plugins/vhost/vhost_user.h @@ -62,11 +62,13 @@ dev->hw_if_index, ##__VA_ARGS__); \ }; -#define UNIX_GET_FD(unixfd_idx) ({ \ - typeof(unixfd_idx) __unixfd_idx = (unixfd_idx); \ - (__unixfd_idx != ~0) ? \ - pool_elt_at_index (file_main.file_pool, \ - __unixfd_idx)->file_descriptor : -1; }) +#define UNIX_GET_FD(unixfd_idx) \ + ({ \ + typeof (unixfd_idx) __unixfd_idx = (unixfd_idx); \ + (__unixfd_idx != ~0) ? \ + clib_file_get (&file_main, __unixfd_idx)->file_descriptor : \ + -1; \ + }) #define foreach_virtio_trace_flags \ _ (SIMPLE_CHAINED, 0, "Simple descriptor chaining") \