From nobody Mon Sep 28 12:33:34 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01D3549503A for ; Fri, 21 Aug 2026 13:50:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787320226; cv=none; b=pdNE6Mt9FhgOpAxNMWIqr6AUv7QLCJhiAZ6F+nxL30SELu2k9/Hilj7SkJy98RFn2d5L//9v3CH1uYFDhrpyRaRBEupsnePVtDxHuhoy7uOwi/8pKnNfQbExfYUDhhRhFmaZsgkZlQ49xdIvtzJNZbBxju38WJYmk488rKetlig= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787320226; c=relaxed/simple; bh=AjWp1TjMRLUGqxdS72hdqYmC5bBQJLPPnhM97ee5Dh8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=J41smcWj1tzoR5OsAwDmDo3Jg95NcemIHZRN9VELUd1vsiWe7eDqa7l4NcSvRfmcgUgiCaaSiSfOyW4E6JSFhSBID6+tJ0WWIsLNrASOpzaRAdJB7gQwAjqGVQ2aeK+ECsE/umG5rHnQ40pAfqeyRxH71byMRyWUsy42K1iCca4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=N4cT5YSi; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=huAYynZS; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="N4cT5YSi"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="huAYynZS" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787320224; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BpYJaQfkL/fXy91zs4mgPaYnWE9uvAuTxt0XGGUcMwU=; b=N4cT5YSi54d0WaPOkOQ9bigNNc3SdHIDhXvYF+jRio2Q6CMvou/sYLIiOH2dcFD5OZ2CuZ PioMTaoAUlawczLN1kQxZ8zIIERaG1kMg44JR1W3YsERoSLKAKw9ybK4EQj8kBt8oIkSON jVPC5PVwziTUB3kGnPYgcCqKb4UH2xU= Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-473-n23mTED_OsWIZ1YtbRvcvQ-1; Fri, 21 Aug 2026 09:50:22 -0400 X-MC-Unique: n23mTED_OsWIZ1YtbRvcvQ-1 X-Mimecast-MFC-AGG-ID: n23mTED_OsWIZ1YtbRvcvQ_1787320222 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-38e54b6556aso1168670a91.2 for ; Fri, 21 Aug 2026 06:50:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787320221; x=1787925021; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=BpYJaQfkL/fXy91zs4mgPaYnWE9uvAuTxt0XGGUcMwU=; b=huAYynZSRvR8sZrUv2iJFwOGJQyO2vsqXKpfwgVdwB2+NP+kFPAf6q4d+EtVKwJT/R h0faM2L3F5omcWu+v5F4onjazYM9MM7sD8xgQwszDVEoZrwlizEqDLQI71S12WzJFlo3 WjOT55YJBzRtYLimdnTNmGkEju4CbZoCAkByqynWdf/PokMGfYsPiNp38IAHH9KmdNIc pXWnzN3mtE6PiMlhjLTgro5HT6xc4VSpiPnyr/XMoImcJt/jSIeW8aEzz7bcv2Wftmtz BCkJZbRhfydilDYQ8zbk8v80xxlCHduFg0EZs74ZZH2Ou6sdgryx5pNuLsssXozF4mFQ g62g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787320221; x=1787925021; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=BpYJaQfkL/fXy91zs4mgPaYnWE9uvAuTxt0XGGUcMwU=; b=rtoNm+EH9cyam8asyL5/LIrPP018p81KMmwiSyRZeFt5dXH4Tl0EDlY/wEuJeVR7WK F1WyWNYS0OP2+Ux5J4BEWWechiCx6+7le9MbM+As7efzPQsBvVJc7z4khE1OXzJ9aL+r j/GhmsJZEzzeP7o1ps6NqVEwPlXAblJSzwv+LQev2dY+21n8dZXmAHZsKFLY1OleBsfj bulbdBJWkzZuwRYq67vK87cP1NYq3vWQoo17RXPuanAcK7tyNcP9b+AxeE2khMRHCuny OqK8I3u+vGcehUJ+Mh/xts1hUouP/sjuejTGZpRpwLF/5YlYHTlXOptZ05VyML6+J6LQ wlkQ== X-Forwarded-Encrypted: i=1; AHgh+RpAisocGlBEDdcMSr3qfa0T5tAFQj6S8e7/6AE3nyFkLVWqs9ynnmF184pTACaMAsFxWNYUyOpS2/QMeYs=@vger.kernel.org X-Gm-Message-State: AFuF++mRGTmgRsOkU2R0gitRSXnuBnJcldJRxi9VpMZzTvM+gikH6h+E 97NMLxWUx7na038YB24z3/eC4hAQTpGIM7dOg5BDx3J4CfcHG+IxzNvhr70sMBhekgsc/uQJS6j ZUbiL0+C3a3BmBX6qE+pcMwBuOqrBYds99xdTNJji6vtBBTWXkpn8gdHdO130WqPWpA== X-Gm-Gg: AR+sD126vBqTgpnBuLcz+x3r5OE/WtN9bFJrxFgevONZMhRbGo6PK9pVpRZlrFAB652 CTgR0CMcMIuTLSX2VJCfm8XJmhbKS9V67bm7oKiTnhK/LyAI2p13D/ArnIVNTP+L1Ld3nildgsw Jyy49RQ/bT8v4n7kjJpMs33Bag4CAaYMIJvarvMxT6NbET4bn+Y64gj6IBXi5bfaocRums2HrMH le4yyPmyo6mlhzgGOqSzs9PWdlR45n1VRRscUec8KrsTTf9prvutnjPNW0eJJ07TDzDp5DElc4C cQkyZiPxzIEY9EN6CIW/b+TKVLG+RxK6/sHfbfg7UVummHUT+cdjqi2sD9PSDOR6lMzhbQBSRt8 0umbobwUwhtawrlcyc0zmiHbhaea6AYaQ X-Received: by 2002:a17:90b:384d:b0:393:19a3:4e5 with SMTP id 98e67ed59e1d1-395c386a056mr10527508a91.16.1787320221494; Fri, 21 Aug 2026 06:50:21 -0700 (PDT) X-Received: by 2002:a17:90b:384d:b0:393:19a3:4e5 with SMTP id 98e67ed59e1d1-395c386a056mr10527444a91.16.1787320220942; Fri, 21 Aug 2026 06:50:20 -0700 (PDT) Received: from mpilaniy-mac.redhat.corp ([122.171.22.116]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm3300502a91.15.2026.08.21.06.50.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2026 06:50:20 -0700 (PDT) From: Mukesh Pilaniya Date: Fri, 21 Aug 2026 19:19:57 +0530 Subject: [PATCH v3 1/2] kexec: return -ENOEXEC from image probe functions on mismatch Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260821-mpilaniy-v3-1-76b355399d2e@redhat.com> References: <20260821-mpilaniy-v3-0-76b355399d2e@redhat.com> In-Reply-To: <20260821-mpilaniy-v3-0-76b355399d2e@redhat.com> To: Catalin Marinas , Will Deacon , Mark Rutland , Huacai Chen , WANG Xuerui , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Andrew Morton , Baoquan He , Mike Rapoport , Pasha Tatashin , Pratyush Yadav , Tao Liu , Philipp Rudo Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, kexec@lists.infradead.org, Mukesh Pilaniya , Bradley Morgan X-Mailer: b4 0.15.2 Several kexec_file_load() image probe functions return -EINVAL when they do not recognize the image format. A probe function that rejects an image should return -ENOEXEC to indicate that the image is not a recognized executable format. -EINVAL implies a problem with the syscall parameters, not with image recognition. kexec_image_probe_default() iterates through registered loaders and returns the last probe's error code to the caller. That error propagates as the kexec_file_load() return value to userspace. Returning -EINVAL from a probe when no loader matches is semantically incorrect and misleads userspace about the nature of the failure. Return -ENOEXEC from all probe functions and their helpers when the image format is not recognized. Signed-off-by: Mukesh Pilaniya Reviewed-by: Philipp Rudo Reviewed-by: Pratyush Yadav Reviewed-by: Bradley Morgan --- arch/arm64/kernel/kexec_image.c | 4 ++-- arch/loongarch/kernel/kexec_efi.c | 4 ++-- arch/riscv/kernel/kexec_image.c | 4 ++-- kernel/kexec_elf.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/arch/arm64/kernel/kexec_image.c b/arch/arm64/kernel/kexec_imag= e.c index b70f4df15a1a..101259874d44 100644 --- a/arch/arm64/kernel/kexec_image.c +++ b/arch/arm64/kernel/kexec_image.c @@ -25,10 +25,10 @@ static int image_probe(const char *kernel_buf, unsigned= long kernel_len) (const struct arm64_image_header *)(kernel_buf); =20 if (!h || (kernel_len < sizeof(*h))) - return -EINVAL; + return -ENOEXEC; =20 if (memcmp(&h->magic, ARM64_IMAGE_MAGIC, sizeof(h->magic))) - return -EINVAL; + return -ENOEXEC; =20 return 0; } diff --git a/arch/loongarch/kernel/kexec_efi.c b/arch/loongarch/kernel/kexe= c_efi.c index 5ee78ebb1546..28a1d0420ba3 100644 --- a/arch/loongarch/kernel/kexec_efi.c +++ b/arch/loongarch/kernel/kexec_efi.c @@ -24,12 +24,12 @@ static int efi_kexec_probe(const char *kernel_buf, unsi= gned long kernel_len) =20 if (!h || (kernel_len < sizeof(*h))) { kexec_dprintk("No LoongArch image header.\n"); - return -EINVAL; + return -ENOEXEC; } =20 if (!loongarch_header_check_dos_sig(h)) { kexec_dprintk("No LoongArch PE image header.\n"); - return -EINVAL; + return -ENOEXEC; } =20 return 0; diff --git a/arch/riscv/kernel/kexec_image.c b/arch/riscv/kernel/kexec_imag= e.c index 51dc89259f16..963a25f5b55b 100644 --- a/arch/riscv/kernel/kexec_image.c +++ b/arch/riscv/kernel/kexec_image.c @@ -20,7 +20,7 @@ static int image_probe(const char *kernel_buf, unsigned l= ong kernel_len) const struct riscv_image_header *h =3D (const struct riscv_image_header *= )kernel_buf; =20 if (!h || kernel_len < sizeof(*h)) - return -EINVAL; + return -ENOEXEC; =20 /* According to Documentation/arch/riscv/boot-image-header.rst, * use "magic2" field to check when version >=3D 0.2. @@ -28,7 +28,7 @@ static int image_probe(const char *kernel_buf, unsigned l= ong kernel_len) =20 if (h->version >=3D RISCV_HEADER_VERSION && memcmp(&h->magic2, RISCV_IMAGE_MAGIC2, sizeof(h->magic2))) - return -EINVAL; + return -ENOEXEC; =20 return 0; } diff --git a/kernel/kexec_elf.c b/kernel/kexec_elf.c index 3a5c25b2adc9..89a444a00693 100644 --- a/kernel/kexec_elf.c +++ b/kernel/kexec_elf.c @@ -172,7 +172,7 @@ static int elf_read_ehdr(const char *buf, size_t len, s= truct elfhdr *ehdr) =20 default: pr_debug("Unknown ELF class.\n"); - return -EINVAL; + return -ENOEXEC; } =20 return elf_is_ehdr_sane(ehdr, len) ? 0 : -ENOEXEC; @@ -236,7 +236,7 @@ static int elf_read_phdr(const char *buf, size_t len, =20 default: pr_debug("Unknown ELF class.\n"); - return -EINVAL; + return -ENOEXEC; } =20 return elf_is_phdr_sane(phdr, len) ? 0 : -ENOEXEC; --=20 Git-155) From nobody Mon Sep 28 12:33:34 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4E89146EF70 for ; Fri, 21 Aug 2026 13:50:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787320233; cv=none; b=m7nLRm7Epk9AFVtRsBIAZGD4MAZK6WjsJiOr3C+aSxO9xnLoMTc4JdYc9ff56KiU//ARlX5zDloscCYOVxEwfX1tO/r7bKy+ySWmczOyqVQiRYmaOf5tTqzlS6zdaR9ghM2zWqkS8KP6XTTyPwUi5CNMBeBoXnEQPEHdxhxs1ow= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787320233; c=relaxed/simple; bh=Zd3eu4CkgFeBhr/VK4WvRpDleYfM+eWkV5wG/8fEo0s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=r3s83xkwDgfxfpqdSAPfYVW7JBWRx2W3OM16uCbCJJN4EsLYFRNKyxBviNp9yCowQ+otOXAD9ruwcE8NvwH+6DHbDHXoHTj5/jN6oZ3oozywQ7+LfYLG0L70NVt1yCs8l832+xGteJtxy1eU81SNlE1SNPDiok7nvYnk88rHJyQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=MLeOSWhH; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=VSSF298b; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="MLeOSWhH"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="VSSF298b" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787320231; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZNohwqjvouRlAnKm9iB5tZeW1CKNRcmkGAU02I+Ttyg=; b=MLeOSWhH0OofD2ygWGpJemnG6FtEsOXI3bm8VALVT55cgbF7joqsgfr8PUILjDfY3gDi5l WHok52I67u9WSFVY6UXBqC0OMuCaw8djQECtm/6ur5gbLo74pzp0BrWqB6dXRLP+gUg/2n KSVSzay1/l8l9nsVeWFp0RiMhe4bExM= Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-649-9Tkz3_vUM2CMxwDiqMvghg-1; Fri, 21 Aug 2026 09:50:29 -0400 X-MC-Unique: 9Tkz3_vUM2CMxwDiqMvghg-1 X-Mimecast-MFC-AGG-ID: 9Tkz3_vUM2CMxwDiqMvghg_1787320229 Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38dde0df80bso1619608a91.3 for ; Fri, 21 Aug 2026 06:50:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787320229; x=1787925029; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ZNohwqjvouRlAnKm9iB5tZeW1CKNRcmkGAU02I+Ttyg=; b=VSSF298bNGA01310lxmqqHls8pJVDod7CoG1gqJdc4NwWuhssRrIr+CteYv0BdZQxz pgkupLFD246Tap2HeBbR76eUIlAzmr2kD4r4uP5tQ9R/0TKAwRlWoG2GTIhygjySYHH6 sI9bqBJc1iF7JmsgJIPQaqJCMgZVjv3p8hckK0Mw8qY9rMi7Qb+n4hewyNJ+s7JvLMtx z2xZEDwOjx0qdemWOt95x2A5J27PKagQVLt1aFc7WfvL4NG8JITSJSVfTv9+0cZkXj4R VDf5DU0/8VVmw14ygkXNDjxawS8+bBtHKJQHUM0Z+9uqto9LPstfO0xDpvIa5+rqX11e ZKIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787320229; x=1787925029; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ZNohwqjvouRlAnKm9iB5tZeW1CKNRcmkGAU02I+Ttyg=; b=SS9hKH0vWV8y8rjw4+OHxWH8mWWAV+C9sS1wu8lfWqvp3ZicbEe0BSVk59aSN+Jvts j4ahzT+s06vqSktgY0yCHGQFnm8hAXtTMex+ODkDUIGGrO+LH1F8LriGcqVQVZ/vzF16 XrPKSP2NNGexRad0YelLRCpMSnV3FcQL+IBmkuP/fQW3jUOFVkC2zGbled7WjeNsYzYi 9kXvl9VOztzRZjygW7cJkC23JEJAnHMw4LN71jZ543upRE9ECpxkloYs1Ggs1ocYim95 uKgkEpnYQddhJRoGpsuoEKeXRxHSq88YtUEy4g0OV36BGFtFadZZI0Qb/n5W40KgaqE5 F/zw== X-Forwarded-Encrypted: i=1; AHgh+RpNnr5RqEOCGpGV5htN0U9EPcpeFj4eqWA1y7qgrRrsgWKg9DRUsI8EvqkOQRsL67hpz1Myindza4m7FNs=@vger.kernel.org X-Gm-Message-State: AFuF++npQHQjMSLY+jHg3zSoCFQ+I/mg/CLyrRBroozBsg3N/TkRf+wZ IxheH0xZMj4N4ZtSAB2LAQ/BJxk922/0/DmDmBvbwTq/yCmEHn5+Hx1Y5/lGibTPoAn4JqdQWM8 /6bWxY19ENom9JEYj5j6PpNtkp82HH3k4LYdsqwAt1U/1TaAiHwAoRv0GtTgHhPv/Mw== X-Gm-Gg: AR+sD13+/AldVDdVtX+wzXLMCI7vUvKuLNpsSyVJ1Xr3cXSbH9N7Rmru5MXhW8j91d3 +E04VwB1rXP8vhhCUfZWZJKKgQRpONDAsBDHAw/7opg/GTa/0NPXSqlxt5ogPBzAx8pVYLvTSIl ezEoR4pb/0O4vFEyGUWYl0qsv+6fj3kfdTLRhFDkQxZNVEl3aq97nTgRvJR/q8CTc67WmJEhGUG Ug+hS/YiJpWglp1CGhDIngRn3omQKHreesZQIjgANlYBJ4DoSL9IeRJE2YXMgRvdbU0E853MD79 GcLCzOzhkjfncbI63iOd/0HwmTba2uOVCds8WMbw7HFMt7oTknGETJUsNKzmxwIO0NOHtNPGFwO Nz2s09HcsxzTvtTuWBkiiGVbLfu71Aczo X-Received: by 2002:a17:90b:55cc:b0:37c:6910:5758 with SMTP id 98e67ed59e1d1-395c334042emr13744011a91.1.1787320228656; Fri, 21 Aug 2026 06:50:28 -0700 (PDT) X-Received: by 2002:a17:90b:55cc:b0:37c:6910:5758 with SMTP id 98e67ed59e1d1-395c334042emr13743913a91.1.1787320228164; Fri, 21 Aug 2026 06:50:28 -0700 (PDT) Received: from mpilaniy-mac.redhat.corp ([122.171.22.116]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm3300502a91.15.2026.08.21.06.50.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2026 06:50:27 -0700 (PDT) From: Mukesh Pilaniya Date: Fri, 21 Aug 2026 19:19:58 +0530 Subject: [PATCH v3 2/2] kexec: fix error propagation in kexec_image_probe_default() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260821-mpilaniy-v3-2-76b355399d2e@redhat.com> References: <20260821-mpilaniy-v3-0-76b355399d2e@redhat.com> In-Reply-To: <20260821-mpilaniy-v3-0-76b355399d2e@redhat.com> To: Catalin Marinas , Will Deacon , Mark Rutland , Huacai Chen , WANG Xuerui , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Andrew Morton , Baoquan He , Mike Rapoport , Pasha Tatashin , Pratyush Yadav , Tao Liu , Philipp Rudo Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, kexec@lists.infradead.org, Mukesh Pilaniya X-Mailer: b4 0.15.2 kexec_image_probe_default() overwrites ret with each loader's probe return value and returns whatever the last loader returned when no probe matches. The error code reaching userspace depends on whichever loader happens to be last in kexec_file_loaders[]. Only continue to the next loader when a probe returns -ENOEXEC. Propagate any other error such as -ENOMEM immediately. Return -ENOEXEC only when all loaders have been tried and none matched. Suggested-by: Pratyush Yadav Signed-off-by: Mukesh Pilaniya Reviewed-by: Pratyush Yadav Reviewed-by: Philipp Rudo --- kernel/kexec_file.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c index 59fb9d71e9d8..c11a815e2235 100644 --- a/kernel/kexec_file.c +++ b/kernel/kexec_file.c @@ -68,17 +68,19 @@ int kexec_image_probe_default(struct kimage *image, voi= d *buf, unsigned long buf_len) { const struct kexec_file_ops * const *fops; - int ret =3D -ENOEXEC; =20 for (fops =3D &kexec_file_loaders[0]; *fops && (*fops)->probe; ++fops) { - ret =3D (*fops)->probe(buf, buf_len); - if (!ret) { + int err =3D (*fops)->probe(buf, buf_len); + + if (!err) { image->fops =3D *fops; - return ret; + return 0; } + if (err !=3D -ENOEXEC) + return err; } =20 - return ret; + return -ENOEXEC; } =20 static void *kexec_image_load_default(struct kimage *image) --=20 Git-155)