From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail04.ics.ntt-tx.co.jp (mail05.ics.ntt-tx.co.jp [210.232.35.69]) by dpdk.org (Postfix) with ESMTP id 2B0931B013 for ; Thu, 28 Dec 2017 05:56:15 +0100 (CET) Received: from gwchk03.silk.ntt-tx.co.jp (gwchk03.silk.ntt-tx.co.jp [10.107.0.111]) by mail04.ics.ntt-tx.co.jp (unknown) with ESMTP id vBS4uE5v025314 for unknown; Thu, 28 Dec 2017 13:56:14 +0900 Received: (from root@localhost) by gwchk03.silk.ntt-tx.co.jp (unknown) id vBS4u5eQ027257 for unknown; Thu, 28 Dec 2017 13:56:05 +0900 Received: from gwchk.silk.ntt-tx.co.jp [10.107.0.110] by gwchk03.silk.ntt-tx.co.jp with ESMTP id PAA27246; Thu, 28 Dec 2017 13:56:05 +0900 Received: from imss03.silk.ntt-tx.co.jp (localhost [127.0.0.1]) by imss03.silk.ntt-tx.co.jp (unknown) with ESMTP id vBS4u5QN010985 for unknown; Thu, 28 Dec 2017 13:56:05 +0900 Received: from mgate01.silk.ntt-tx.co.jp (smtp02.silk.ntt-tx.co.jp [10.107.0.37]) by imss03.silk.ntt-tx.co.jp (unknown) with ESMTP id vBS4u5Bb010980 for unknown; Thu, 28 Dec 2017 13:56:05 +0900 Message-Id: <201712280456.vBS4u5Bb010980@imss03.silk.ntt-tx.co.jp> Received: from localhost by mgate01.silk.ntt-tx.co.jp (unknown) id vBS4u4am025622 ; Thu, 28 Dec 2017 13:56:05 +0900 From: x-fn-spp@sl.ntt-tx.co.jp To: spp@dpdk.org Date: Thu, 28 Dec 2017 13:55:21 +0900 X-Mailer: git-send-email 1.9.1 In-Reply-To: <4aae78ff-3b6c-cdfe-a8b7-24ec08b73935@lab.ntt.co.jp> References: <4aae78ff-3b6c-cdfe-a8b7-24ec08b73935@lab.ntt.co.jp> X-TM-AS-MML: No Subject: [spp] [PATCH 14/57] spp_vf: fix return value overwrite problem X-BeenThere: spp@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Soft Patch Panel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Dec 2017 04:56:17 -0000 From: Hiroyuki Nakamura Add new variable for saving the return value of receive_message() to avoid overwrite problem. Signed-off-by: Kentaro Watanabe Signed-off-by: Yasufum Ogawa --- src/vf/command_proc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/vf/command_proc.c b/src/vf/command_proc.c index d8e7fd1..3ec4f5b 100644 --- a/src/vf/command_proc.c +++ b/src/vf/command_proc.c @@ -749,6 +749,7 @@ void spp_command_proc_do(void) { int ret = -1; + int msg_ret = -1; int i; static int sock = -1; @@ -765,12 +766,12 @@ spp_command_proc_do(void) if (unlikely(ret != 0)) return; - ret = receive_message(&sock, &msgbuf); - if (likely(ret == 0)) { + msg_ret = receive_message(&sock, &msgbuf); + if (likely(msg_ret == 0)) { return; } - for (i = 0; i < ret; ++i) { + for (i = 0; i < msg_ret; ++i) { switch (*(msgbuf + msg_len + i)) { case '{': ++lb_cnt; @@ -785,9 +786,12 @@ spp_command_proc_do(void) ret = process_request(msgbuf, msg_len); msgbuf_remove_front(msgbuf, msg_len); + msg_ret = 0; msg_len = 0; rb_cnt = 0; lb_cnt = 0; } } + + msg_len = msg_len + msg_ret; } -- 1.9.1