From nobody Mon Sep 28 16:21:58 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 9E571486BB6 for ; Wed, 19 Aug 2026 17:47:47 +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=1787161669; cv=none; b=Otol4K9+apxPCvI8XysVE9kFcU1MmsPY5fAv1JEzhwsKOztDg9+qaQKmPYbX3pdjjj0XJ6DyjthG+VqVtUiYt2YiCVoJFFrrZhcPPXw1dOCL0PLnCb6s0UJ8+f8PQB9RjSZHKnh1Pzg6FjQfsh4Hd5MH/LqrgOJuFdzXTPUKKt8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787161669; c=relaxed/simple; bh=SS5H+iMDfeifALY3gIvFKddQqGF1AXHVAFj3yZy3WJo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Jqt3rodak4B1hw42Ca0shQaIntcMSngFvk0aMYl/QVTTsH04b/dcSAKFb6DdqSkBgNIHPIELnCmDOmnubqLiJLS9zRM1EOOVNq/08KFEKzjW/nfOR4CZO2vNKoafT6P/nL8fN3VWzRBqlum9wD6aigtVgfZ0LIjqa6W5V1Y+Amo= 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=dffeOz5t; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=nDjaXxNH; 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="dffeOz5t"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="nDjaXxNH" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787161666; 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=vmoIUhHXRYirfmXtPkyGTipOfc1IGodR0GKUD6MrhOE=; b=dffeOz5tPSO3hAaK50Lhk8HtHFIaX/dJgz6llXtexSz97Ntz35lnjve2P+EJ+xT1odmi7S ajxhl8c4QJfyvVRrULFU/KsWb9ifnLm2xqUoHcT4XKCeO8j3OzwBS/aAd3NftkUZebaECR OR1yZ1pf2Fk+JHpFXGvPGPDafmVGSAk= Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-327-fbF2q_krPzuF9ldZSfN6-Q-1; Wed, 19 Aug 2026 13:47:45 -0400 X-MC-Unique: fbF2q_krPzuF9ldZSfN6-Q-1 X-Mimecast-MFC-AGG-ID: fbF2q_krPzuF9ldZSfN6-Q_1787161664 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38e25e4b41cso1735133a91.0 for ; Wed, 19 Aug 2026 10:47:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787161664; x=1787766464; 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=vmoIUhHXRYirfmXtPkyGTipOfc1IGodR0GKUD6MrhOE=; b=nDjaXxNHr4gdkf8H2f2Wxo2HAhlRmlrCt70Dpr1QtEShNIDpH5fZPSLD1UxR2TjpYg DPEij2JvMDWKS75TowaLtDzrMeyjF9/f2HlqgklDdD6UHOtuPEFt5yrB95SfcHYIh3oG v3Ch2cKtfU921iD3GduTw/MYTLuBJ74J2OZbDHQineUEPaJtYa2/3609eP/T4/1iiWi8 l0Wmb8O14kg68blKEl0iarNuFQToUD93pmIFvQXBr5H7qR9E9mNbMCw+KQuqMAWN7AW7 WN5ihnqAqLkpdMMm+wqdx4NNoXW0szzPt45jAHpU+IkquMba3fRj5Paors0Na2AnYkX4 UJqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787161664; x=1787766464; 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=vmoIUhHXRYirfmXtPkyGTipOfc1IGodR0GKUD6MrhOE=; b=S8csJLHF6EvUYKWDrN4n1dmdZ40VGOohInDiLg5E/DlQtWu32R6M7w6EJWnF/KMDBU eVn+TcDFtjKDkcdDJMJvu2hFPGR7niICcsVmN3arLP1gEzb19zivuTik9DUIV6xZgQBl VQnpn9Is/XTsNlJL1e79fDxE9JDhoMO2UMV3pmma/aCwqTRbCAhOT9sfgz3ecJVCq8du ccOUet5egIerBZRlnyQ1czHgeEzyWcA3pZV5EPp5Q2fzY2J1hOzLsAKL3TKnKI/04+CY yosGZXrOG1v3cH2IzQM1TOcBKE2Q09wYuazCZbiPXRUFrV8Am91fKS9DNc73h6KTP2ua 61WA== X-Forwarded-Encrypted: i=1; AHgh+RoC3QxVtRXMtBw1DQDFyPghMypBd9SU7aNXAsI7i6HzsUG8Hj0IABjLltPTajO+wz6+gHp5uaX4petNgQM=@vger.kernel.org X-Gm-Message-State: AFuF++n4UY6Ul69/fydKZt10H76RgFZKvHBm+y11IZPcgG3QcOTsoGSC 08y/2c+sllp6f5bC9hpUNJ8RNw7rstTjWu2uHu08ypAO+zx2y0kcdergjac0Rap7aQiGKqdtQPA dXiNV8Hx4Np8bWmjvLyAUKoO/12mHCGedtIuFCH//+0LaUexeU+EhLWPlKR6saMkBM0dgDMXfiw == X-Gm-Gg: AR+sD11tsBspT7Mjqks1WMqapTDk1BMNY3ea5xjOF0S0wUR7+Gj4obIUlyTGHhv3hsU sFrM7Z9J4snWFsfA9NeEhZAEgEnlXhCRfbYXOWilmjeLdXBI1R81KVdhiSb5M5fCB4WlsiiMUzf mGVbYlK8R6RwMzpyV9enQlwzkm0bs09Q8qwkQeKur6NAn1bPfB/IgKmNQGgrt4Fd7CngonzbZ19 uz6j5sRhAh0DXslON0xvcSG3aDzOULQPVzYSn5nlCXlKmOTYTOQizHlIcaEPL0kyUR6ofzPVk3D CNL+r7pjyeM+3nCVv7NQdeLIoDh202AI3mTEMRmy1DnzDDop5IblXOF2P38b/dAC4ihg+jamoPh 7U5J9j4R7PxTJ9H14kUkJWep8QwqMVXwb X-Received: by 2002:a17:90a:d604:b0:38e:97f0:aa4b with SMTP id 98e67ed59e1d1-3958127a5aamr12212205a91.13.1787161664052; Wed, 19 Aug 2026 10:47:44 -0700 (PDT) X-Received: by 2002:a17:90a:d604:b0:38e:97f0:aa4b with SMTP id 98e67ed59e1d1-3958127a5aamr12212103a91.13.1787161663548; Wed, 19 Aug 2026 10:47:43 -0700 (PDT) Received: from mpilaniy-mac.redhat.corp ([122.171.22.116]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3957f96ca41sm3319861a91.4.2026.08.19.10.47.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Aug 2026 10:47:43 -0700 (PDT) From: Mukesh Pilaniya Date: Wed, 19 Aug 2026 23:17:22 +0530 Subject: [PATCH v2 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: <20260819-mpilaniy-v2-1-95e929ede0e5@redhat.com> References: <20260819-mpilaniy-v2-0-95e929ede0e5@redhat.com> In-Reply-To: <20260819-mpilaniy-v2-0-95e929ede0e5@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 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 16:21:58 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.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 6F73C3C0608 for ; Wed, 19 Aug 2026 17:47:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787161675; cv=none; b=lSX/fDVKYSSd61xK+MBs1Hagodn0VVO9cLjBRb9rkWJejymnpPFPeMgBpF+0c6Bz5dni31NuY9YchNsHOt1uu6yn1aoqzI0KFrQn5ZFYgTglC+Ljc8BT89EkdeqfzBMNq03j0pc3Wwabg8MOtl76/To12tZrW3w68WEA7tRrrdk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787161675; c=relaxed/simple; bh=QOixwpyRMiksXMRiIHZJVcB3rxZj6mZk1Q6KwOIvpIQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ETptJc89Fs/wQkRm9gcGdOQqEKGnN1BVht2GJpczgPUXIsSDxZv7pk5zkzbD7lujizlsEdeLzEHzxVEs6j1btBWpIoVWXedyjg6gsAw30KWOEbQU2WXiWW2En+nz2FdSv6nm52Hp0d79YKm1kQD0lXY/FlW/zFtAjdnPjpToyA8= 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=LBZpDSsG; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=AEiOL7c/; arc=none smtp.client-ip=170.10.133.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="LBZpDSsG"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="AEiOL7c/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787161673; 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=wsYxExfrI1OgfgUtsxz2vPPCZHiFnpZ/4W9NF1DJIH8=; b=LBZpDSsGenTXo8/UrP1d6YQu3hgcvau97vbmpDbPODspBJE/JJNHLveG8JlmltEhCnjywn e9tXT8A+ZBcm1a2R4t8g/Ja3SjzHDB+9IoMmIWV2P1lwJkhJAAoZhYdc//FBBLrLlFDiaL D4iH7XtLf4eAe4SufyW+7KAwaVestlk= Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-466-mrTnKSzyP1uv6ql1CCX_SA-1; Wed, 19 Aug 2026 13:47:52 -0400 X-MC-Unique: mrTnKSzyP1uv6ql1CCX_SA-1 X-Mimecast-MFC-AGG-ID: mrTnKSzyP1uv6ql1CCX_SA_1787161671 Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3931cd2e4cbso1765060a91.2 for ; Wed, 19 Aug 2026 10:47:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787161671; x=1787766471; 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=wsYxExfrI1OgfgUtsxz2vPPCZHiFnpZ/4W9NF1DJIH8=; b=AEiOL7c/3MtHbG49Egdi2TYrA0uV1xP89Gdj8NTpMmdLQoszmLmY0vkVmQC6DC28ya BsHLC5HvnhmIcioOL5Yj5EIxyeH9fNDocd+34rQt0TIxfZ+zM15et8m5y/hUNqKiSQBQ zMzeeyj5eGNYBOb3dJfrr2dr6pKq9RSzKzxN45AJGDajHu124z1J6qVDvxbi3Y14r2wT xAq5iwFQB/cXsU7vXtOS/XkAeH6hFLGYWMg4iI9kL1fYP/gqwidVjMR/M41lWz96plP3 jRwW76c9pB34CHFcG1kJw1IulPgtvJIsQm+XP+p0sfYomBIfNxB0PwfR0OC6oeoRMs7x V7hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787161671; x=1787766471; 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=wsYxExfrI1OgfgUtsxz2vPPCZHiFnpZ/4W9NF1DJIH8=; b=lkhOikzy7C6U0Pvw5PnahbG2KJudbmsJO3VpsriyQ+1K1xpoiSIsZs9TcnGdvf74OT nzkMWg3P66DKRZCw2oioErrXL4fVKJnAJ4YS7mG9+XYlLxfUjNHwY2FuS7xD5CTlTcPE hHNi9MPnJYSN9Kh3FbOmJO6H1pjo5qhGDWexBy02eT0lXFbpZHploBwqzj6p6iV19esi v7a4xdK++cM3W2BsXBeeJajoxWPkTSSTHUYjEeAutGGwRtGSqGbWB5nTScSiKMDlL8n5 e741qrHgx7v4U9mcMH/5n4Fh/2oJ717Am3aEreWhKTkzpdTVILI1ChyEk6GSKb0YCPi4 +uYA== X-Forwarded-Encrypted: i=1; AHgh+RpJJL2jcyauwnmQG675Eh6vtVBq/EycAkrmK958gSYb0T+kqsJPwVenFV82wBHeGHBRmsngNCZq56LUVn4=@vger.kernel.org X-Gm-Message-State: AFuF++lb1Qaiq6I7AYKaLnTnaddSJV7feWtmgEHex2FqQgitCJ8MDNMS CHwJHRTdkrR2IK94OpUSEzdis9wtCdy14tCctFB6AfmKiWsFe2hHzc19FUcqrnnW33LXzuqGrMP GL3pLmXJRoCQYys/bKsVztc2fciIlAznlEGmaUM98Mc7jZh8frTrtLqB24w7Wvvgdaw== X-Gm-Gg: AR+sD12ph2rBhy7wlUHld9RmiHasaejd2kDQhgEHmREYwoat6rGgAM0YMNVoI18BDfC 4seYfyCI6jFJk0MXcub3l98RZU9p9ohVM8uocfoLR3hN2WBW70E2ufm8D+sSWQas9i4Rbkk9nO+ GUHKzyxfb2yzSmqr8Z1sdkwrFD87cOlHWni+ztMSvFW1BtsVx9Yi8FnCwmU9VyEG2owZglq1TfP pBOo9OaTo5O0POYNBoqOkckwDyQ3uHNWgq5Cb4GkjjpDcIMWMkmSURMqAB9fs6wdA6865yN9goj bF38OdshvFYzUJliDoTXfveR5G74fqtWvrBWHPaA43FuTtwzpUcbUNYw1qGrvvhsl0ib33vJbcb 3aoHhWOkT4PNb5jxM+2ysvJy1RJHqkuo7 X-Received: by 2002:a17:90b:5105:b0:37f:fb1d:63fa with SMTP id 98e67ed59e1d1-39581070da4mr12374217a91.15.1787161671156; Wed, 19 Aug 2026 10:47:51 -0700 (PDT) X-Received: by 2002:a17:90b:5105:b0:37f:fb1d:63fa with SMTP id 98e67ed59e1d1-39581070da4mr12374130a91.15.1787161670669; Wed, 19 Aug 2026 10:47:50 -0700 (PDT) Received: from mpilaniy-mac.redhat.corp ([122.171.22.116]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3957f96ca41sm3319861a91.4.2026.08.19.10.47.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Aug 2026 10:47:50 -0700 (PDT) From: Mukesh Pilaniya Date: Wed, 19 Aug 2026 23:17:23 +0530 Subject: [PATCH v2 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: <20260819-mpilaniy-v2-2-95e929ede0e5@redhat.com> References: <20260819-mpilaniy-v2-0-95e929ede0e5@redhat.com> In-Reply-To: <20260819-mpilaniy-v2-0-95e929ede0e5@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: Philipp Rudo Reviewed-by: Pratyush Yadav --- 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..b3060e984ef3 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 ret =3D (*fops)->probe(buf, buf_len); + + if (ret =3D=3D 0) { image->fops =3D *fops; - return ret; + return 0; } + if (ret !=3D -ENOEXEC) + return ret; } =20 - return ret; + return -ENOEXEC; } =20 static void *kexec_image_load_default(struct kimage *image) --=20 Git-155)