From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-19.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4848DC4338F for ; Thu, 19 Aug 2021 03:47:36 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 786476109E for ; Thu, 19 Aug 2021 03:47:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 786476109E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 7118A831D4; Thu, 19 Aug 2021 05:46:47 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="YqHRtb6F"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D5C7483175; Thu, 19 Aug 2021 05:46:26 +0200 (CEST) Received: from mail-oi1-x22a.google.com (mail-oi1-x22a.google.com [IPv6:2607:f8b0:4864:20::22a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id F2A9482E85 for ; Thu, 19 Aug 2021 05:46:19 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-oi1-x22a.google.com with SMTP id r26so6700083oij.2 for ; Wed, 18 Aug 2021 20:46:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6EGbIa+fVuNVyOzGlhySaeJI+y1jMjK0Gk1226TsCNQ=; b=YqHRtb6FvKhp5SeUC+H8ob/1aKAqNYAnL7RPMuimPQdAOiMOUPHUk1MOHgxaJ3HmlZ zCSNpdhcE9hEhvbzKpMXmrQ7+m6Tlub8v8nfkmsygSxxG7+ZAtrx9BfiTX+vBMYAiXsr AJgE/ycEROlrWBnRUngf4Q+Tcg83ebZFd+GBY= 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:mime-version:content-transfer-encoding; bh=6EGbIa+fVuNVyOzGlhySaeJI+y1jMjK0Gk1226TsCNQ=; b=RXNOlu9xpjYdgVOv4uqtCcZuQ2fXLuf6MeWq9D79HOklKc4md7PWw3OFpb1sbte2ih v1R7ZQ1zU1gH2dECYH6gPZt9GBOwniH1X/30DxxPA5m4z2B0kZNsSbISVPg/6OVMJw6k imOCMw1Gt2EcNiVJ95ZxBt5Aw+efny6gEp3wq8sLiT0sh42Gp7dTIGgn/jEY1jvlESx6 gveByj5vq5wSEwFBDEaBnGcdxxrBJZjocIvz77TjMMITf2DAyEimb48Et4oNNayVNPeG /uhcLjYa3R2jBagO6ajG5raGHycZRzGDPw9SOvCGByPq3831I9V4sPXAkHgOpDFb3Opf 8/ig== X-Gm-Message-State: AOAM530faiYNoWf5Lsph8tMOdl9VJWRG8+zFe48wAQIC8c8RC/iY1ze5 wQ/2jI5GmYCIWLViCCLSLR38h6qnmSYvLQ== X-Google-Smtp-Source: ABdhPJxJIR86Hp+K7WPr2fD7W5n/NQnTcXK7v3HU5s3sDYcs8O8waTIRMRfDkMBxRhevYy+AU8Jaqg== X-Received: by 2002:a05:6808:1906:: with SMTP id bf6mr1114890oib.52.1629344778343; Wed, 18 Aug 2021 20:46:18 -0700 (PDT) Received: from kiwi.bld.corp.google.com (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id q3sm370025ooa.13.2021.08.18.20.46.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Aug 2021 20:46:18 -0700 (PDT) From: Simon Glass To: U-Boot Mailing List Cc: Ilias Apalodimas , Steffen Jaeckel , Michal Simek , Tom Rini , Dennis Gilmore , Daniel Schwierzeck , Lukas Auer , Simon Glass Subject: [PATCH 06/28] pxe: Tidy up the is_pxe global Date: Wed, 18 Aug 2021 21:45:39 -0600 Message-Id: <20210819034601.1618773-7-sjg@chromium.org> X-Mailer: git-send-email 2.33.0.rc1.237.g0d66db33f3-goog In-Reply-To: <20210819034601.1618773-1-sjg@chromium.org> References: <20210819034601.1618773-1-sjg@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean Move this into the context to avoid a global variable. Also rename it since the current name does not explain what it actually affects. Signed-off-by: Simon Glass --- cmd/pxe.c | 6 ++---- cmd/pxe_utils.c | 13 +++++++------ cmd/pxe_utils.h | 8 +++++--- cmd/sysboot.c | 4 +--- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/cmd/pxe.c b/cmd/pxe.c index d79b9b733d7..17fe364bed9 100644 --- a/cmd/pxe.c +++ b/cmd/pxe.c @@ -121,7 +121,7 @@ do_pxe_get(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) struct pxe_context ctx; int err, i = 0; - pxe_setup_ctx(&ctx, cmdtp, do_get_tftp, NULL); + pxe_setup_ctx(&ctx, cmdtp, do_get_tftp, NULL, false); if (argc != 1) return CMD_RET_USAGE; @@ -175,7 +175,7 @@ do_pxe_boot(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) char *pxefile_addr_str; struct pxe_context ctx; - pxe_setup_ctx(&ctx, cmdtp, do_get_tftp, NULL); + pxe_setup_ctx(&ctx, cmdtp, do_get_tftp, NULL, false); if (argc == 1) { pxefile_addr_str = from_env("pxefile_addr_r"); @@ -235,8 +235,6 @@ static int do_pxe(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) if (argc < 2) return CMD_RET_USAGE; - is_pxe = true; - /* drop initial "pxe" arg */ argc--; argv++; diff --git a/cmd/pxe_utils.c b/cmd/pxe_utils.c index 5ad6d3e3d44..7d15c75dd87 100644 --- a/cmd/pxe_utils.c +++ b/cmd/pxe_utils.c @@ -30,8 +30,6 @@ #define MAX_TFTP_PATH_LEN 512 -bool is_pxe; - int format_mac_pxe(char *outbuf, size_t outbuf_len) { uchar ethaddr[6]; @@ -58,13 +56,13 @@ int format_mac_pxe(char *outbuf, size_t outbuf_len) * be interpreted as "don't prepend anything to paths". */ static int get_bootfile_path(const char *file_path, char *bootfile_path, - size_t bootfile_path_size) + size_t bootfile_path_size, bool allow_abs_path) { char *bootfile, *last_slash; size_t path_len = 0; /* Only syslinux allows absolute paths */ - if (file_path[0] == '/' && !is_pxe) + if (file_path[0] == '/' && allow_abs_path) goto ret; bootfile = from_env("bootfile"); @@ -110,7 +108,8 @@ static int get_relfile(struct pxe_context *ctx, const char *file_path, char addr_buf[18]; int err; - err = get_bootfile_path(file_path, relfile, sizeof(relfile)); + err = get_bootfile_path(file_path, relfile, sizeof(relfile), + ctx->allow_abs_path); if (err < 0) return err; @@ -1432,9 +1431,11 @@ void handle_pxe_menu(struct pxe_context *ctx, struct pxe_menu *cfg) } void pxe_setup_ctx(struct pxe_context *ctx, struct cmd_tbl *cmdtp, - pxe_getfile_func getfile, void *userdata) + pxe_getfile_func getfile, void *userdata, + bool allow_abs_path) { ctx->cmdtp = cmdtp; ctx->getfile = getfile; ctx->userdata = userdata; + ctx->allow_abs_path = allow_abs_path; } diff --git a/cmd/pxe_utils.h b/cmd/pxe_utils.h index 921455f694e..6681442ea55 100644 --- a/cmd/pxe_utils.h +++ b/cmd/pxe_utils.h @@ -75,8 +75,6 @@ struct pxe_menu { struct list_head labels; }; -extern bool is_pxe; - struct pxe_context; typedef int (*pxe_getfile_func)(struct pxe_context *ctx, const char *file_path, char *file_addr); @@ -87,6 +85,7 @@ typedef int (*pxe_getfile_func)(struct pxe_context *ctx, const char *file_path, * @cmdtp: Pointer to command table to use when calling other commands * @getfile: Function called by PXE to read a file * @userdata: Data the caller requires for @getfile + * @allow_abs_path: true to allow absolute paths */ struct pxe_context { struct cmd_tbl *cmdtp; @@ -102,6 +101,7 @@ struct pxe_context { pxe_getfile_func getfile; void *userdata; + bool allow_abs_path; }; /** @@ -196,8 +196,10 @@ int format_mac_pxe(char *outbuf, size_t outbuf_len); * @cmdtp: Command table entry which started this action * @getfile: Function to call to read a file * @userdata: Data the caller requires for @getfile - stored in ctx->userdata + * @allow_abs_path: true to allow absolute paths */ void pxe_setup_ctx(struct pxe_context *ctx, struct cmd_tbl *cmdtp, - pxe_getfile_func getfile, void *userdata); + pxe_getfile_func getfile, void *userdata, + bool allow_abs_path); #endif /* __PXE_UTILS_H */ diff --git a/cmd/sysboot.c b/cmd/sysboot.c index 5615e81e9ca..85fa5d8aa01 100644 --- a/cmd/sysboot.c +++ b/cmd/sysboot.c @@ -65,8 +65,6 @@ static int do_sysboot(struct cmd_tbl *cmdtp, int flag, int argc, char *filename; int prompt = 0; - is_pxe = false; - if (argc > 1 && strstr(argv[1], "-p")) { prompt = 1; argc--; @@ -91,7 +89,7 @@ static int do_sysboot(struct cmd_tbl *cmdtp, int flag, int argc, env_set("bootfile", filename); } - pxe_setup_ctx(&ctx, cmdtp, NULL, NULL); + pxe_setup_ctx(&ctx, cmdtp, NULL, NULL, true); if (strstr(argv[3], "ext2")) { ctx.getfile = do_get_ext2; } else if (strstr(argv[3], "fat")) { -- 2.33.0.rc1.237.g0d66db33f3-goog