From patchwork Wed Oct 13 03:39:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Art Nikpal X-Patchwork-Id: 1540166 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Ul69fRGi; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HTdZP6bdlz9sNH for ; Wed, 13 Oct 2021 14:39:39 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 377988321B; Wed, 13 Oct 2021 05:39:30 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Ul69fRGi"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 082B5832C7; Wed, 13 Oct 2021 05:39:29 +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,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-pf1-x431.google.com (mail-pf1-x431.google.com [IPv6:2607:f8b0:4864:20::431]) (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 035EC831E9 for ; Wed, 13 Oct 2021 05:39:25 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=email2tema@gmail.com Received: by mail-pf1-x431.google.com with SMTP id g14so1273862pfm.1 for ; Tue, 12 Oct 2021 20:39:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=wE4VvV/qnpeenSSNzOvmurIrJdFJ9JVUCKUO1gQouV0=; b=Ul69fRGi7wOtY2aSvlPO4n5a3jvvXRaX2t3W6yfwF2A4nn6Kqquqaivigy94AufltW ejbSW63ZGRQCN56w8aryZIqDbSNou7gMMjwX/Uyd6b0CIpVm9CaDxLxTc0AVwqSNpx5Z NUBMqrXgmf1P8xAp67diGj6uJgoeh3p1C6h8iueqBgf/tSgX1agX8uI4asbJvAycIzLv KctAoT1tKpg1G2tE+uNj2GBagVyMy8nKEw3eo8gs1OD1ljVtiav0QPAMlVVQbaq6RZr1 2L0pkPJTTSXyeZmLpcQbvLlwCQhw+ld/CUDDUhog01cmbsjgWZU67xCPxyFKswVp7ZM9 Ys0w== 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:mime-version :content-transfer-encoding; bh=wE4VvV/qnpeenSSNzOvmurIrJdFJ9JVUCKUO1gQouV0=; b=BfpwYOiJzXaMHWsYJ/iIYqlSihA/36/8At+zBed8umJKJRK3TyoqFBAilixb+y6ypI ADnbGWhcBvPJZbIcGWiKEjxWzBfw5Z7KeSLgkT24/QV45mc4pEHBJj9sH5d4/KfXyDLk SJwwQuT+E8J45SsgelvkaR/9+RXQI7zCemfePCOCgICOojXtQkEUQGcaPUUJtSmsZwpO uTsYI4FbyYKitbxRGXB1mByc4zinTO2K+m8RqqlxTgIdihMg1ZolUNmhWtu0pmv8Fejk sp5cXF5vDaBw+e0f0OqpJ+0PJ7ZHejD1TFA+cerFUK4I2vB8eKH9VznVwXWRcGUxuFns sxZQ== X-Gm-Message-State: AOAM532dALjrv+9r0k0IFtuJ84sFf7q3ETICSqPZbA6HcKHaI5PQKi6m es/ATyGPXUisxasLPB3f3IQ= X-Google-Smtp-Source: ABdhPJzXvVudN6x9dS9bt/zHpspJNnYzmXxWcIMDxgiufgbtUPSM1dy4zm0BoBrxTglA6XUSQIQ1fA== X-Received: by 2002:a63:788d:: with SMTP id t135mr15571499pgc.126.1634096363005; Tue, 12 Oct 2021 20:39:23 -0700 (PDT) Received: from localhost.localdomain (199.19.111.227.16clouds.com. [199.19.111.227]) by smtp.gmail.com with ESMTPSA id i1sm12719317pgc.94.2021.10.12.20.39.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Oct 2021 20:39:22 -0700 (PDT) From: Artem Lapkin X-Google-Original-From: Artem Lapkin To: sjg@chromium.org Cc: trini@konsulko.com, narmstrong@baylibre.com, twarren@nvidia.com, andre.przywara@arm.com, u-boot@lists.denx.de, u-boot-amlogic@groups.io, art@khadas.com, nick@khadas.com, gouwa@khadas.com Subject: [PATCH] cmd: sysboot: dont overwrite bootfile env Date: Wed, 13 Oct 2021 11:39:12 +0800 Message-Id: <20211013033912.3297227-1-art@khadas.com> X-Mailer: git-send-email 2.25.1 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 Problem PXE cannot boot normally after Sysboot changed the bootfile env (called from boot_extlinux) from the default "boot.scr.uimg" to "/boot/extlinux/extlinux.conf". In addition, an unbootable extlinux configuration will also make the PXE boot unbootable, because it will use the incorrect path "/boot/extlinux/" from the bootfile env. Solution sysboot must care about bootfile and restore default value after usage. Come from: https://patchwork.ozlabs.org/project/uboot/patch/20211012085544.3206394-1-art@khadas.com/ Signed-off-by: Artem Lapkin --- cmd/sysboot.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/cmd/sysboot.c b/cmd/sysboot.c index af6a2f1b7f..99b11cc127 100644 --- a/cmd/sysboot.c +++ b/cmd/sysboot.c @@ -2,6 +2,7 @@ #include #include +#include #include #include #include "pxe_utils.h" @@ -61,8 +62,9 @@ static int do_sysboot(struct cmd_tbl *cmdtp, int flag, int argc, unsigned long pxefile_addr_r; struct pxe_menu *cfg; char *pxefile_addr_str; - char *filename; + char *filename, *filename_bak; int prompt = 0; + int ret = 0; is_pxe = false; @@ -83,9 +85,10 @@ static int do_sysboot(struct cmd_tbl *cmdtp, int flag, int argc, pxefile_addr_str = argv[4]; } - if (argc < 6) { - filename = env_get("bootfile"); - } else { + filename = env_get("bootfile"); + if (argc > 5) { + filename_bak = malloc(strlen(filename) + 1); + strcpy(filename_bak, filename); filename = argv[5]; env_set("bootfile", filename); } @@ -98,26 +101,26 @@ static int do_sysboot(struct cmd_tbl *cmdtp, int flag, int argc, do_getfile = do_get_any; } else { printf("Invalid filesystem: %s\n", argv[3]); - return 1; + goto err; } fs_argv[1] = argv[1]; fs_argv[2] = argv[2]; if (strict_strtoul(pxefile_addr_str, 16, &pxefile_addr_r) < 0) { printf("Invalid pxefile address: %s\n", pxefile_addr_str); - return 1; + goto err; } if (get_pxe_file(cmdtp, filename, pxefile_addr_r) < 0) { printf("Error reading config file\n"); - return 1; + goto err; } cfg = parse_pxefile(cmdtp, pxefile_addr_r); if (!cfg) { printf("Error parsing config file\n"); - return 1; + goto err; } if (prompt) @@ -126,8 +129,15 @@ static int do_sysboot(struct cmd_tbl *cmdtp, int flag, int argc, handle_pxe_menu(cmdtp, cfg); destroy_pxe_menu(cfg); - - return 0; + goto ret; + err: + ret = 1; + ret: + if (filename_bak) { + env_set("bootfile", filename_bak); + free(filename_bak); + } + return ret; } U_BOOT_CMD(sysboot, 7, 1, do_sysboot,