From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f182.google.com (mail-wr0-f182.google.com [209.85.128.182]) by dpdk.org (Postfix) with ESMTP id DF479F94 for ; Wed, 30 Aug 2017 18:00:09 +0200 (CEST) Received: by mail-wr0-f182.google.com with SMTP id z91so19755413wrc.1 for ; Wed, 30 Aug 2017 09:00:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BcXzmzCpYo5tHQ/q9cnxg/jlJ7rX4/t/HwNYYgta38w=; b=hVbdk/7ECcKFkYB/a3b/WbJTTdjMiv+ITqMPTZP7ZNcX+lEuAdhyhlGc7/AoaizpSp nPDzQztLMy1acZ7psjf2t0EiA5l7vfx6ae8gCavgtYzZCdmkzNKspPHmKDJ8RSNaWnX5 2autOC5WCrUGNlKfUZYjpEdgoqQofihOXavBbhf+JavH6QBT0FOr6NMB7/9JY23zzEYF Mre25Vrlbem9jL785j21pAUqcxpbAyWFtCMz/fr3sLOJIPo1g5CvT+az+9UzTmHn7Y1H lRTFoFqcnu8RWEtKOuWV0ktHqKlZE8czaIlwHsW9nqFg+pj4+E8zkVtlpx46cUcjuq6T zwiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=BcXzmzCpYo5tHQ/q9cnxg/jlJ7rX4/t/HwNYYgta38w=; b=XjyCG0PKvLYD1BPIT9r2Jv+L9xvP0qrnqa4Cjax4j6V117CHbYsch88mVhm9Fb4UaR 6bmpCPkAxT+iIJ3QuvhjifbzK2EKFWBKZGfPQg7g6MQNqW6SEr/XdRjPIV5SjbfHf7ub 1CXqjpu6rYUSYNOTL74DSHvBkVuvd/ULTf+tgYaOvOmjCjrtCdxVo9oFD5/RfQ5ilL+x 9yvX8WWdmEsFH3AKCS2OUKuU2qQFzh8bjgTd3EV7TlwoNZFzjb8MKUPyiEuYycM/Vv4c s44o7JVdaGqll9qU6NniCTIsrDyUFc6rKouLRV4dQMUbelxVOmrgUbn6bdYqAjDKu8ez 5YBw== X-Gm-Message-State: AHYfb5g16xPkceArB1xsxa/uVLL3H51FpCZWyLG/qA3QteQKCEf3C0LD Arei+gHktudQ+A85 X-Received: by 10.223.136.206 with SMTP id g14mr1384192wrg.272.1504108809412; Wed, 30 Aug 2017 09:00:09 -0700 (PDT) Received: from bidouze.dev.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id c1sm5057208wre.83.2017.08.30.09.00.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 30 Aug 2017 09:00:08 -0700 (PDT) From: Gaetan Rivet To: dev@dpdk.org Cc: Matan Azrad , Gaetan Rivet , stable@dpdk.org Date: Wed, 30 Aug 2017 17:59:54 +0200 Message-Id: <1504108794-21917-1-git-send-email-gaetan.rivet@6wind.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1504018748-4766-1-git-send-email-matan@mellanox.com> References: <1504018748-4766-1-git-send-email-matan@mellanox.com> Subject: [dpdk-stable] [PATCH] net/failsafe: fix errno set on command execution X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Aug 2017 16:00:10 -0000 This is unacceptable behavior. Fixes: a0194d828100 ("net/failsafe: add flexible device definition") Fixes: 35ffe4208140 ("net/failsafe: fix missing pclose after popen") Cc: stable@dpdk.org Reported-by: Matan Azrad Signed-off-by: Gaetan Rivet --- drivers/net/failsafe/failsafe_args.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/drivers/net/failsafe/failsafe_args.c b/drivers/net/failsafe/failsafe_args.c index 1f22416..cc29c5e 100644 --- a/drivers/net/failsafe/failsafe_args.c +++ b/drivers/net/failsafe/failsafe_args.c @@ -115,8 +115,7 @@ fs_execute_cmd(struct sub_device *sdev, char *cmdline) /* store possible newline as well */ char output[DEVARGS_MAXLEN + 1]; size_t len; - int old_err; - int ret, pclose_ret; + int ret; RTE_ASSERT(cmdline != NULL || sdev->cmdline != NULL); if (sdev->cmdline == NULL) { @@ -135,12 +134,10 @@ fs_execute_cmd(struct sub_device *sdev, char *cmdline) sdev->cmdline[i] = ' '; } DEBUG("'%s'", sdev->cmdline); - old_err = errno; fp = popen(sdev->cmdline, "r"); if (fp == NULL) { - ret = errno; + ret = -errno; ERROR("popen: %s", strerror(errno)); - errno = old_err; return ret; } /* We only read one line */ @@ -155,18 +152,11 @@ fs_execute_cmd(struct sub_device *sdev, char *cmdline) goto ret_pclose; } ret = fs_parse_device(sdev, output); - if (ret) { + if (ret) ERROR("Parsing device '%s' failed", output); - goto ret_pclose; - } ret_pclose: - pclose_ret = pclose(fp); - if (pclose_ret) { - pclose_ret = errno; + if (pclose(fp) == -1) ERROR("pclose: %s", strerror(errno)); - errno = old_err; - return pclose_ret; - } return ret; } -- 2.1.4