From patchwork Thu Oct 14 18:47:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1541096 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=k8w/aFrU; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HVdkH3YjWz9sR4 for ; Fri, 15 Oct 2021 05:49:59 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8E09883653; Thu, 14 Oct 2021 20:49:50 +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="k8w/aFrU"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id F1B7783669; Thu, 14 Oct 2021 20:48:52 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-io1-xd33.google.com (mail-io1-xd33.google.com [IPv6:2607:f8b0:4864:20::d33]) (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 936C683669 for ; Thu, 14 Oct 2021 20:48:30 +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-io1-xd33.google.com with SMTP id d125so4961646iof.5 for ; Thu, 14 Oct 2021 11:48:30 -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=G3kBcCySjcD3vMPAVBsYUF20PFpAOFntguPIDvd+4GY=; b=k8w/aFrUosZXcQNLQG6wlb6nPOoYtVMYTIalAu2p674tokU9tuxIQTGpMG26C37YJ/ 2cKuJRA5k9T4SyDSQOCYiodEwVc01kbAAC0/ofEEqavKIYSTWxTDSb+QDHA3TJPfp9sk mSHt8fnHuHgqkySPsyG2DxcsFFr9D63zz4ofs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=G3kBcCySjcD3vMPAVBsYUF20PFpAOFntguPIDvd+4GY=; b=2y9pJ7Ca2pjvU0HnKGem+JhXlNPTw+dtwGZaJP5MTvkMozoq+QOfRZT4cg02m+WZWk FzVT9nSE/wrunhw3+FUjVxQn6YVehHNu7XZvR3Rn37vDBwJW9KZfJfIJQt6Z6ew0iVDj JCmGZGwm8APNzCl03h/pbWjLV2eo4CS0SKEH/H7TPAnDnimH+AI29Mmkux0yESgZpyEI DqEhNMNpG7xHA8af1JAUeXDPMh2RVF6J5nQ0FwvyYOF7HazL5woV2/Q2ZkeNyOu4PU2Y ri6BdKkdcZt2TpbBtDwwM+C5sAWIBpji3kU6Wl8HvBMNu7SltWLIMM6br+htq6hSSsKC aE7w== X-Gm-Message-State: AOAM531tsgz1bCXijZr+c2EQsWxJrXKYa/S0X9OGfyJFFnltgYyDqlv3 0WtCEwLLmEJe6TUJdDP3K8YjfMgI+GIMTg== X-Google-Smtp-Source: ABdhPJzY2wy5jsGwTYFgGU3IDK0nQ58kStgqIEB7/KN8J7rF84ymN59zBkrfQfIYrYEzQoYslRW6gg== X-Received: by 2002:a5d:9319:: with SMTP id l25mr528855ion.208.1634237309100; Thu, 14 Oct 2021 11:48:29 -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 w15sm1697625ill.23.2021.10.14.11.48.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Oct 2021 11:48:28 -0700 (PDT) From: Simon Glass To: U-Boot Mailing List Cc: Patrice Chotard , Artem Lapkin , Tom Rini , Joe Hershberger , Heinrich Schuchardt , Peter Hoyes , Simon Glass Subject: [PATCH v3 06/18] pxe: Tidy up the is_pxe global Date: Thu, 14 Oct 2021 12:47:59 -0600 Message-Id: <20211014184811.482560-7-sjg@chromium.org> X-Mailer: git-send-email 2.33.0.1079.g6e70778dc9-goog In-Reply-To: <20211014184811.482560-1-sjg@chromium.org> References: <20211014184811.482560-1-sjg@chromium.org> MIME-Version: 1.0 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 Reviewed-by: Artem Lapkin Tested-by: Artem Lapkin Reviewed-by: Ramon Fried --- (no changes since v1) 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")) {