From nobody Sat Feb 7 23:23:04 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 8C9DA428852 for ; Thu, 22 Jan 2026 12:18:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769084283; cv=none; b=nm2AVMwQg6W4h+MV9cPbN53YGDFedit3idmKYAMAQYqndYHMG11KQB/q0F0aFdt/RWw5CfrkmV8MxrR3bTUPC3V2v0MLSu64HPpy4A/KbVfTScHz7Rb4oLhiWGmhnIDNguVDsY4mixeqSu/6YO0lr1mXeCXgVoAF/ASsJe12wyo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769084283; c=relaxed/simple; bh=+pKK6YqjCMJk2Ik3AjBYzI1PBFwRJgM5oBdefe1/cHs=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=f4RbD4nBcSTMdNZlZKet147U536y0b2x6PH3L0+b89lsRDJweivZuaQZJz0rguAEXCt6XlTWuPP9tov3N1a69CO+JrRWVSl9RDKIuxw+Cevw9jAQXsGVHS2pUCKHHmf05XkSImUyOpqGGaRNaLXS46fJRDg7JjyEHY8wFwmazGg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=r8OKixc2; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="r8OKixc2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0C7F2C116C6; Thu, 22 Jan 2026 12:18:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1769084283; bh=+pKK6YqjCMJk2Ik3AjBYzI1PBFwRJgM5oBdefe1/cHs=; h=From:To:Cc:Subject:Date:From; b=r8OKixc2G/2NXhTyA+0uVZl/ZDMOjEaHITQyYQCFBafsKOn+b2PIkFccWozlddAlO 18YXHZZ+97eI/p7OC3F3DFcXbmIq+sgDcaBuyEr4pQ2+GoJPXFRMZ6EvWWC3FWH7Rw hjc+jZt6nUszsq4VmpQo/p2ZD+okWpNpMOKCmMILuTjRUZ4/JtCvD4m4ekFCO+ENNb UXDj+c8/WvFNyXlkBPNoHIfhJlVtjbyhyfXYcRBAguuMLVvs8LDXIHalDDpV+cBZkJ PmuO/M7TiCItvBHXcog3MVE4QoAAYSi05Ii2Dzxkz8Eb3dzpDe98c3AXLfw4aPy+l8 /yPeLZe254KUw== From: Mike Rapoport To: Andrew Morton Cc: Alexander Graf , Mike Rapoport , Pasha Tatashin , Pratyush Yadav , kexec@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH] kho: cleanup error handling in kho_populate() Date: Thu, 22 Jan 2026 14:17:57 +0200 Message-ID: <20260122121757.575987-1-rppt@kernel.org> X-Mailer: git-send-email 2.51.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: "Mike Rapoport (Microsoft)" * use dedicated labels for error handling instead of checking if a pointer is not null to decide if it should be unmapped * drop assignment of values to err that are only used to print a numeric error code, there are pr_warn()s for each failure already so printing a numeric error code in the next line does not add anything useful Signed-off-by: Mike Rapoport (Microsoft) Reviewed-by: Pasha Tatashin Reviewed-by: Pratyush Yadav --- kernel/liveupdate/kexec_handover.c | 39 +++++++++++++----------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_h= andover.c index d4482b6e3cae..e248ce2e04b7 100644 --- a/kernel/liveupdate/kexec_handover.c +++ b/kernel/liveupdate/kexec_handover.c @@ -1441,46 +1441,40 @@ void __init kho_memory_init(void) void __init kho_populate(phys_addr_t fdt_phys, u64 fdt_len, phys_addr_t scratch_phys, u64 scratch_len) { + unsigned int scratch_cnt =3D scratch_len / sizeof(*kho_scratch); struct kho_scratch *scratch =3D NULL; phys_addr_t mem_map_phys; void *fdt =3D NULL; - int err =3D 0; - unsigned int scratch_cnt =3D scratch_len / sizeof(*kho_scratch); + int err; =20 /* Validate the input FDT */ fdt =3D early_memremap(fdt_phys, fdt_len); if (!fdt) { pr_warn("setup: failed to memremap FDT (0x%llx)\n", fdt_phys); - err =3D -EFAULT; - goto out; + goto err_report; } err =3D fdt_check_header(fdt); if (err) { pr_warn("setup: handover FDT (0x%llx) is invalid: %d\n", fdt_phys, err); - err =3D -EINVAL; - goto out; + goto err_unmap_fdt; } err =3D fdt_node_check_compatible(fdt, 0, KHO_FDT_COMPATIBLE); if (err) { pr_warn("setup: handover FDT (0x%llx) is incompatible with '%s': %d\n", fdt_phys, KHO_FDT_COMPATIBLE, err); - err =3D -EINVAL; - goto out; + goto err_unmap_fdt; } =20 mem_map_phys =3D kho_get_mem_map_phys(fdt); - if (!mem_map_phys) { - err =3D -ENOENT; - goto out; - } + if (!mem_map_phys) + goto err_unmap_fdt; =20 scratch =3D early_memremap(scratch_phys, scratch_len); if (!scratch) { pr_warn("setup: failed to memremap scratch (phys=3D0x%llx, len=3D%lld)\n= ", scratch_phys, scratch_len); - err =3D -EFAULT; - goto out; + goto err_unmap_fdt; } =20 /* @@ -1497,7 +1491,7 @@ void __init kho_populate(phys_addr_t fdt_phys, u64 fd= t_len, if (WARN_ON(err)) { pr_warn("failed to mark the scratch region 0x%pa+0x%pa: %pe", &area->addr, &size, ERR_PTR(err)); - goto out; + goto err_unmap_scratch; } pr_debug("Marked 0x%pa+0x%pa as scratch", &area->addr, &size); } @@ -1519,13 +1513,14 @@ void __init kho_populate(phys_addr_t fdt_phys, u64 = fdt_len, kho_scratch_cnt =3D scratch_cnt; pr_info("found kexec handover data.\n"); =20 -out: - if (fdt) - early_memunmap(fdt, fdt_len); - if (scratch) - early_memunmap(scratch, scratch_len); - if (err) - pr_warn("disabling KHO revival: %d\n", err); + return; + +err_unmap_scratch: + early_memunmap(scratch, scratch_len); +err_unmap_fdt: + early_memunmap(fdt, fdt_len); +err_report: + pr_warn("disabling KHO revival\n"); } =20 /* Helper functions for kexec_file_load */ base-commit: 24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7 --=20 2.51.0