From 61ee7875f660a90be59b121760e1c463968f5cd1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Beno=C3=AEt=20Ganne?= Date: Wed, 20 Aug 2025 10:13:52 +0200 Subject: [PATCH] vnet: fix set interfaces rx-placement cli MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - unformat() parses 32-bit integers whereas clib_thread_t is a 16-bit integers, yielding stack overflow - no need to pass thread_index when parsing main - validate thread_index otherwise ~0 + 1 arithmetic done in set_hw_interface_rx_placement() selects main thread by default Type: fix Fixes: fc7b794758fbdd9bcae337e90255c1fc1e548808 Change-Id: I36dcba977573a32f6f91e6c5470966f35cce30ed Signed-off-by: Benoît Ganne --- src/vnet/interface_cli.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vnet/interface_cli.c b/src/vnet/interface_cli.c index b49ad24c0de..a92718b3f2f 100644 --- a/src/vnet/interface_cli.c +++ b/src/vnet/interface_cli.c @@ -1732,7 +1732,7 @@ set_interface_rx_placement (vlib_main_t *vm, unformat_input_t *input, vnet_main_t *vnm = vnet_get_main (); u32 hw_if_index = (u32) ~ 0; u32 queue_id = (u32) 0; - clib_thread_index_t thread_index = CLIB_INVALID_THREAD_INDEX; + u32 thread_index = (u32) ~0; u8 is_main = 0; if (!unformat_user (input, unformat_line_input, line_input)) @@ -1745,7 +1745,7 @@ set_interface_rx_placement (vlib_main_t *vm, unformat_input_t *input, ; else if (unformat (line_input, "queue %d", &queue_id)) ; - else if (unformat (line_input, "main", &thread_index)) + else if (unformat (line_input, "main")) is_main = 1; else if (unformat (line_input, "worker %d", &thread_index)) ; @@ -1763,6 +1763,9 @@ set_interface_rx_placement (vlib_main_t *vm, unformat_input_t *input, if (hw_if_index == (u32) ~ 0) return clib_error_return (0, "please specify valid interface name"); + if (thread_index == (u32) ~0 && !is_main) + return clib_error_return (0, "please specify valid worker thread or main"); + error = set_hw_interface_rx_placement (hw_if_index, queue_id, thread_index, is_main); -- 2.16.6