From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E5DEFA04DD; Thu, 22 Oct 2020 20:15:35 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CF8217CC8; Thu, 22 Oct 2020 20:15:32 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 5A5026CA1 for ; Thu, 22 Oct 2020 20:15:28 +0200 (CEST) IronPort-SDR: R3SiABuChDvV//F9aDUnpGY8z8AZzQlWzNugybqV6cnU8WmcLvIiPVYjYUg5CnBfIEk6PQWMyV E/MTbRV8vbVA== X-IronPort-AV: E=McAfee;i="6000,8403,9782"; a="164978481" X-IronPort-AV: E=Sophos;i="5.77,404,1596524400"; d="scan'208";a="164978481" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Oct 2020 11:15:27 -0700 IronPort-SDR: 8ha5y1RoWhBSQbm2bBKPZOBxAMBCm+FT4cYTFNUMMxs1Vh6WRHRrqXrKj5QbGOte5zufgCDwtY VdXIG3GTeLdw== X-IronPort-AV: E=Sophos;i="5.77,404,1596524400"; d="scan'208";a="359946012" Received: from rmenon-desk.amr.corp.intel.com (HELO [10.166.30.253]) ([10.166.30.253]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Oct 2020 11:15:27 -0700 To: Pallavi Kadam , dev@dpdk.org, thomas@monjalon.net Cc: dmitry.kozliuk@gmail.com, Narcisa.Vasile@microsoft.com, talshn@nvidia.com References: <20201021202616.2732-1-pallavi.kadam@intel.com> From: Ranjit Menon Message-ID: <9bd6fb52-5df5-3a94-d372-abefec819f89@intel.com> Date: Thu, 22 Oct 2020 11:15:26 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.12.1 MIME-Version: 1.0 In-Reply-To: <20201021202616.2732-1-pallavi.kadam@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Subject: Re: [dpdk-dev] [PATCH] eal: create a runtime directory on windows X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 10/21/2020 1:26 PM, Pallavi Kadam wrote: > Added eal_create_runtime_dir() function in order to run any application > as a user that does not have administrator access. > Currently, since there is no runtime directory set, the code tries to > create a file in C:\ which is only writable with administrator > privileges. As a result, if the user is not admin, the application will > fail. > > Signed-off-by: Ranjit Menon > Signed-off-by: Pallavi Kadam > --- > lib/librte_eal/windows/eal.c | 57 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 57 insertions(+) > > diff --git a/lib/librte_eal/windows/eal.c b/lib/librte_eal/windows/eal.c > index 6334aca03..b0f356405 100644 > --- a/lib/librte_eal/windows/eal.c > +++ b/lib/librte_eal/windows/eal.c > @@ -5,6 +5,7 @@ > #include > #include > #include > +#include > #include > > #include > @@ -34,6 +35,55 @@ static int mem_cfg_fd = -1; > /* internal configuration (per-core) */ > struct lcore_config lcore_config[RTE_MAX_LCORE]; > > +int > +eal_create_runtime_dir(void) > +{ > + char temp_dir[PATH_MAX]; > + char runtime_dir[PATH_MAX]; > + int ret; > + > + /* get user-writable temp path */ > + if (GetTempPathA(sizeof(temp_dir), temp_dir) == 0) { > + RTE_LOG_WIN32_ERR("GetTempPath"); > + return -1; > + } > + > + /* create DPDK runtime subdirectory under temp dir */ > + ret = strcat_s(temp_dir, sizeof(temp_dir), "dpdk"); > + if (ret != 0) { > + RTE_LOG(ERR, EAL, "Error creating DPDK runtime path name\n"); > + return -1; > + } > + > + /* create prefix-specific subdirectory under DPDK runtime dir */ > + ret = snprintf(runtime_dir, sizeof(runtime_dir), "%s\\%s", > + temp_dir, eal_get_hugefile_prefix()); > + if (ret < 0 || ret == sizeof(runtime_dir)) { > + RTE_LOG(ERR, EAL, "Error creating prefix-specific runtime path\n"); > + return -1; > + } > + > + /* create the path if it doesn't exist - step by step */ > + ret = _mkdir(temp_dir); > + if (ret < 0 && errno != EEXIST) { > + RTE_LOG(ERR, EAL, "Error creating '%s': %s\n", > + temp_dir, strerror(errno)); > + return -1; > + } > + > + ret = _mkdir(runtime_dir); > + if (ret < 0 && errno != EEXIST) { > + RTE_LOG(ERR, EAL, "Error creating '%s': %s\n", > + runtime_dir, strerror(errno)); > + return -1; > + } > + > + if (eal_set_runtime_dir(runtime_dir, sizeof(runtime_dir))) > + return -1; > + > + return 0; > +} > + > /* Detect if we are a primary or a secondary process */ > enum rte_proc_type_t > eal_proc_type_detect(void) > @@ -181,6 +231,13 @@ eal_parse_args(int argc, char **argv) > } > } > > + /* create runtime data directory */ > + if (internal_conf->no_shconf == 0 && > + eal_create_runtime_dir() < 0) { > + RTE_LOG(ERR, EAL, "Cannot create runtime directory\n"); > + return -1; > + } > + > if (eal_adjust_config(internal_conf) != 0) > return -1; > Thomas, Dmitry: If at all possible, I think we should try and get this fix into -rc2. Without this fix, a non-admin user cannot run any application on Windows. ranjit m.