From patchwork Sat Mar 14 23:15:52 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1974 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1773530247; bh=gatashKvGBYtnnP5Cohtywo53lnck1DqYTaV901p81Q=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=HmMrxoB9qM5edmotYqiPSyj9UwDXhblCfClibwqcgUz4Sl+NA8g7h5JjdEzpC55rU cxZUfYkZyV27kRGKYk8R7KfloP1JeufRgoyJdRVVg0mm/uqVuOuZku9F1pAf+tWQno iBrykcPO/JFHD/D7H3A6N5MBdr6dml8am+F8A92awQb8/rE0PZUkgXaPmAa/NnaMnZ cyJeI2IajzTAdZ2rEkcv+2eii1nfA2wvv2v4yZkozT/7+hNTKtSQ/tBlCMvSjZ90UR Ht8nm97YR1n/Ciek7JZJltIy0qgRUgK3ps8hXaBw2FYAEcXT+q46N7WLQ99FwKnxqb gOEyqvceCCmDg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 235D76A033 for ; Sat, 14 Mar 2026 17:17:27 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id D4xxRDrClbZd for ; Sat, 14 Mar 2026 17:17:27 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1773530247; bh=gatashKvGBYtnnP5Cohtywo53lnck1DqYTaV901p81Q=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=HmMrxoB9qM5edmotYqiPSyj9UwDXhblCfClibwqcgUz4Sl+NA8g7h5JjdEzpC55rU cxZUfYkZyV27kRGKYk8R7KfloP1JeufRgoyJdRVVg0mm/uqVuOuZku9F1pAf+tWQno iBrykcPO/JFHD/D7H3A6N5MBdr6dml8am+F8A92awQb8/rE0PZUkgXaPmAa/NnaMnZ cyJeI2IajzTAdZ2rEkcv+2eii1nfA2wvv2v4yZkozT/7+hNTKtSQ/tBlCMvSjZ90UR Ht8nm97YR1n/Ciek7JZJltIy0qgRUgK3ps8hXaBw2FYAEcXT+q46N7WLQ99FwKnxqb gOEyqvceCCmDg== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 101D769FF7 for ; Sat, 14 Mar 2026 17:17:27 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1773530245; bh=Alsjox4IhapxWSp9pueIEDvFUxz6O3TSTotAoirtx/8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gVpwEuCIlma6N8fwonPIrF7oN6n7moxNYJiORog3Wk/1UPzl1zygMNpUANv75eZs2 CCmNVMKfI8dG7thzpEUdrgtVN3fua0bnzcVEFnMixb7YV8TcaZ4Tzvbr3K4ueqtLbM f0thdITg8zxQAmzrtgjAVaYwjjR5miwel4qXIrYEpgbFvt1KangHyicphbqwFnk9AV +qGgb1xIUq120OLVUSEXT6PbAm5T+LcjTeo5RzXQNp1GjeEjqf79gLA9ZH3ihJlR5Q gYWGn2WiaR7PKbKIsi61SVTuE85ZzIMvZrYXMsGD/B8vM9zVoRqE4u3IX6Gi5Kk+mM TrLaDHH1ymcVw== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id A7D6E69FF7; Sat, 14 Mar 2026 17:17:25 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id yQn9MA5yL-lf; Sat, 14 Mar 2026 17:17:25 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1773530245; bh=cZ3IqyNu75VuSyxUYIdRPG35ZXbl1llvyl/WIF+Fago=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aTCp4PEgpEVgNOJR3buBd+mWsJh9w42iQ7lBY22G38WGRZ82UMm66RddL7F0gjlpW RBdiBOPJIhTrMCXlbqzM4WVhjjOm7twU2I4uqQwADcbUk5EV+20RJlcJvy5WJKMZwN ahlJsJ4jYti8tebFJOuqln32jaHTbfqs4AUDqP3nCzkU22RHqsgbaIDaqZDSr1xnHa RjK66sGERsCDLXVaQb/x4bMJxf+wejRN3dXUaIL+bpckw/JkFHyREGNVydFQmSgRTH Sk/TjcZicmrOgEz8TTzVHwSJkD6ykKtwrW/9SKpf1UfnYbPQC7wagf79MOYlfgkP2b Oibv5a2MJ9nmw== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 0F73169ECF; Sat, 14 Mar 2026 17:17:25 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Sat, 14 Mar 2026 17:15:52 -0600 Message-ID: <20260314231618.338113-2-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260314231618.338113-1-sjg@u-boot.org> References: <20260314231618.338113-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: F2ZM6S47ANM6NJ3TWL2N36GGTGGAIHYR X-Message-ID-Hash: F2ZM6S47ANM6NJ3TWL2N36GGTGGAIHYR X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 01/19] sandbox: Pass exit code through sandbox_exit() List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass sandbox_exit() always exits with code 0, discarding any error from the caller. The -c command path worked around this by calling os_exit() directly, bypassing state_uninit() and losing cleanup such as writing the malloc dump. Add an exit_code parameter to sandbox_exit() so callers can propagate errors while still getting a clean shutdown. Update all callers to pass 0 except sandbox_main_loop_init() which passes the command return value. Signed-off-by: Simon Glass --- arch/sandbox/cpu/cpu.c | 5 ++--- arch/sandbox/include/asm/u-boot-sandbox.h | 2 +- arch/sandbox/lib/interrupts.c | 2 +- drivers/sysreset/sysreset_sandbox.c | 4 ++-- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c index d6177fbbd14..791af49464b 100644 --- a/arch/sandbox/cpu/cpu.c +++ b/arch/sandbox/cpu/cpu.c @@ -20,7 +20,7 @@ DECLARE_GLOBAL_DATA_PTR; -void __noreturn sandbox_exit(void) +void __noreturn sandbox_exit(int exit_code) { /* Do this here while it still has an effect */ os_fd_restore(); @@ -28,8 +28,7 @@ void __noreturn sandbox_exit(void) if (state_uninit()) os_exit(2); - /* This is considered normal termination for now */ - os_exit(0); + os_exit(exit_code); } /* delay x useconds */ diff --git a/arch/sandbox/include/asm/u-boot-sandbox.h b/arch/sandbox/include/asm/u-boot-sandbox.h index 941f35f9e69..60fb300f623 100644 --- a/arch/sandbox/include/asm/u-boot-sandbox.h +++ b/arch/sandbox/include/asm/u-boot-sandbox.h @@ -41,7 +41,7 @@ struct udevice; void sandbox_reset(void); /* Exit sandbox (quit U-Boot) */ -void __noreturn sandbox_exit(void); +void __noreturn sandbox_exit(int exit_code); /** * sandbox_init() - init sandbox diff --git a/arch/sandbox/lib/interrupts.c b/arch/sandbox/lib/interrupts.c index 3f6583e11f0..e9207b82032 100644 --- a/arch/sandbox/lib/interrupts.c +++ b/arch/sandbox/lib/interrupts.c @@ -53,6 +53,6 @@ void os_signal_action(int sig, unsigned long pc) printf("resetting ...\n\n"); sandbox_reset(); } else { - sandbox_exit(); + sandbox_exit(0); } } diff --git a/drivers/sysreset/sysreset_sandbox.c b/drivers/sysreset/sysreset_sandbox.c index d126fad0372..6739ecbd92f 100644 --- a/drivers/sysreset/sysreset_sandbox.c +++ b/drivers/sysreset/sysreset_sandbox.c @@ -63,13 +63,13 @@ static int sandbox_sysreset_request(struct udevice *dev, enum sysreset_t type) state->last_sysreset = type; if (!state->sysreset_allowed[type]) return -EACCES; - sandbox_exit(); + sandbox_exit(0); case SYSRESET_POWER: case SYSRESET_HOT: case SYSRESET_TO_FIRMWARE_UI: if (!state->sysreset_allowed[type]) return -EACCES; - sandbox_exit(); + sandbox_exit(0); default: return -EPROTONOSUPPORT; }