X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fvlib%2Funix%2Finput.c;h=98cb133409f904eca36743164a3f9806df873007;hb=feda545105106d673fdca61028331c86eeb1f408;hp=1c1cb1aa79c58a845ec13839ff6ff4c514617239;hpb=9ae190e9d228bfc1358482d4f07da1f4cfd41c90;p=vpp.git diff --git a/src/vlib/unix/input.c b/src/vlib/unix/input.c index 1c1cb1aa79c..98cb133409f 100644 --- a/src/vlib/unix/input.c +++ b/src/vlib/unix/input.c @@ -272,17 +272,18 @@ linux_epoll_input_inline (vlib_main_t * vm, vlib_node_runtime_t * node, for (e = em->epoll_events; e < em->epoll_events + n_fds_ready; e++) { u32 i = e->data.u32; - clib_file_t *f = pool_elt_at_index (fm->file_pool, i); + clib_file_t *f; clib_error_t *errors[4]; int n_errors = 0; + /* + * Under rare scenarios, epoll may still post us events for the + * deleted file descriptor. We just deal with it and throw away the + * events for the corresponding file descriptor. + */ + f = fm->file_pool + i; if (PREDICT_FALSE (pool_is_free (fm->file_pool, f))) { - /* - * Under rare scenerop, epoll may still post us events for the - * deleted file descriptor. We just deal with it and throw away the - * events for the corresponding file descriptor. - */ if (e->events & EPOLLIN) { errors[n_errors] = @@ -411,10 +412,15 @@ VLIB_INIT_FUNCTION (linux_epoll_input_init); static clib_error_t * unix_input_init (vlib_main_t * vm) { - return vlib_call_init_function (vm, linux_epoll_input_init); + return 0; } -VLIB_INIT_FUNCTION (unix_input_init); +/* *INDENT-OFF* */ +VLIB_INIT_FUNCTION (unix_input_init) = +{ + .runs_before = VLIB_INITS ("linux_epoll_input_init"), +}; +/* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON