ipc: fix undefined behavior in no-shconf mode
PATCH 1/1 ipc: fix undefined behavior in no-shconf mode
In no-shconf mode the rte_mp_request_sync() wasn't initializing the reply parameter, which contained e.g. a number of sent requests. Callers of rte_mp_request_sync() might check that param afterwards and might read potentially unitialized memory.
The no-shconf check that makes us return early (with rc = 0) was placed before the reply initialization. Fix this by making the reply initialization occur first.
--- lib/librte_eal/common/eal_common_proc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
lib/librte_eal/common/eal_common_proc.c +5 -5
@@ -939,13 +939,17 @@ rte_mp_request_sync(struct rte_mp_msg *req, struct rte_mp_reply *reply,if (check_input (req) == false)return -1 ; + reply->nb_sent =0 ; + reply->nb_received =0 ; + reply->msgs =NULL ; +if (internal_config.no_shconf) {RTE_LOG (DEBUG ,EAL ,"No shared files mode enabled, IPC is disabled\n" );return 0 ; }if (gettimeofday (&now,NULL ) <0 ) { -RTE_LOG (ERR ,EAL ,"Faile to get current time\n" ); +RTE_LOG (ERR ,EAL ,"Failed to get current time\n" ); rte_errno = errno;return -1 ; }
@@ -954,10 +958,6 @@ rte_mp_request_sync(struct rte_mp_msg *req, struct rte_mp_reply *reply, end.tv_sec = now.tv_sec + ts->tv_sec + (now.tv_usec *1000 + ts->tv_nsec) /1000000000 ; - reply->nb_sent =0 ; - reply->nb_received =0 ; - reply->msgs =NULL ; -/* for secondary process, send request to the primary process only */ if (rte_eal_process_type () ==RTE_PROC_SECONDARY ) {pthread_mutex_lock (&pending_requests.lock);
Signature · 1 line
2.17.1
Quoted 9 lines · Darek Stojaczyk
In no-shconf mode the
rte_mp_request_sync()wasn't initializing thereplyparameter, which contained e.g. a number of sent requests. Callers ofrte_mp_request_sync()might check that param afterwards and might read potentially unitialized memory.The no-shconf check that makes us return early (with rc = 0) was placed before the
replyinitialization. Fix this by making thereplyinitialization occur first.
Quoted 6 lines
Signed-off-by Darek Stojaczyk <[email protected]>---
Signature · 2 lines
Thanks, Anatoly
Thomas Monjalon
Applied24/10/2018 12:20, Burakov, Anatoly:
Quoted 10 lines · Darek Stojaczyk
Quoted 9 lines
In no-shconf mode the
rte_mp_request_sync()wasn't initializing thereplyparameter, which contained e.g. a number of sent requests. Callers ofrte_mp_request_sync()might check that param afterwards and might read potentially unitialized memory.The no-shconf check that makes us return early (with rc = 0) was placed before the
replyinitialization. Fix this by making thereplyinitialization occur first.
Quoted 8 lines
Quoted 6 lines
Signed-off-by Darek Stojaczyk <[email protected]>---
Acked-by Anatoly Burakov <[email protected]>
Applied, thanks