From nobody Mon Jun 15 02:49:00 2026 Received: from stravinsky.debian.org (stravinsky.debian.org [82.195.75.108]) (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 92C943C73EA for ; Tue, 7 Apr 2026 17:02:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=82.195.75.108 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775581333; cv=none; b=Vp+NKsN1STmya8eZq5dDrg+qZpvWY4jWAL/W0IvUI9gAleRUjMwlXuJa1eQKLBXU6ep5Rb8vHol7Msd8nBqOJu/lhKTzCdvXgKagZM+uGeHPPcBpjoHWm0Oso0nEXZQ29/Enb1FjFthkl53sVrvuSXwDJVlZ08qP+Ec+wk/CTgc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775581333; c=relaxed/simple; bh=mGwEireWqSGdcxepiszY5FgqrgUhgGJ91Fpy3eOBcDM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=HiFflulRcGgVkcvE31NjRUUOKAnw/lq3l/faFWNaP9qVNnW0THnuhc893DKvgHlBLlTvQH3o9RvkSQwz6o78uSSd/Q6ui9IDVYm+2LpboZ73ud1+vsyuvOkKoZZKpkP9Znzqt3kIMT9Pee4qTlwZs3pQrmR8bV5/T4AktB3QCRs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=none smtp.mailfrom=debian.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b=TDW7x8/C; arc=none smtp.client-ip=82.195.75.108 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=debian.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b="TDW7x8/C" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; s=smtpauto.stravinsky; h=X-Debian-User:Cc:To:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From: Reply-To:Content-ID:Content-Description:In-Reply-To:References; bh=RU9CUTBlQTV9unvZiW1Jd4pICbElcO0miIF1kiEWLp4=; b=TDW7x8/Cs5bog2cDLG7VRZw7mI uXdr5mFUG0MHd/TjOmBDl3ivMIiF2q2rgA8LWXVvR0d3+AVnpWpRf4n4rjTlR/DSZEd02PSBfWqO9 A0jZAJj3dFxox5lZ1fvv5iVwGTd5XhZNRXAuHKNn/DFmzdqGv4nvM9TGt7vSg5aFsVnH3hsfdoXza gif5GP1xJXNZOVc8ZjjZ9+lhp7iTfBQub4UeKgf8M+EQFEggWPgwcTMq7do11Bj0XsEEKL+7upZmc NyIp54SgnZzTgTe1ee+PcccgWdWh/a/NszTSpOWqQfOwUdtAglQZP7tUZL0tO7NHrBXN+03HQc8V+ LTzBs2jw==; Received: from authenticated user by stravinsky.debian.org with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.96) (envelope-from ) id 1wA9oO-007mvG-1S; Tue, 07 Apr 2026 17:01:59 +0000 From: Breno Leitao Date: Tue, 07 Apr 2026 10:01:47 -0700 Subject: [PATCH] kho: fix error handling in kho_add_subtree() 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: <20260407-kho_fix_send-v1-1-b21977feb960@debian.org> X-B4-Tracking: v=1; b=H4sIAHo41WkC/yXMTQqDMBAG0KsM39pAjH+Qq5QiaiY6LcSSaUUQ7 y5tl2/zDihnYYWnA5k3UVkTPJUFYVqGNLORAE9w1rW2tp15LmsfZe+VUzADV1Us29A11qEgvDJ H2X/d7f63fsYHT+/vgfO8AOSrA1twAAAA X-Change-ID: 20260407-kho_fix_send-ae33f16d7502 To: Alexander Graf , Mike Rapoport , Pasha Tatashin , Pratyush Yadav Cc: kexec@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@meta.com, Breno Leitao X-Mailer: b4 0.16-dev-453a6 X-Developer-Signature: v=1; a=openpgp-sha256; l=2270; i=leitao@debian.org; h=from:subject:message-id; bh=mGwEireWqSGdcxepiszY5FgqrgUhgGJ91Fpy3eOBcDM=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBp1TiD8BaOCojAoyo4gqxHXTLFN+vR9pNm/DeW3 TfrpuAhq7yJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCadU4gwAKCRA1o5Of/Hh3 bQYFD/0VGdPVpIsIE+BuFlsCe113eYUK+EoINu70uXmeeQkBov6zRr52bpi+VEaWBJd47lWSy7H XKY/7ME30RAOXDTT5aPAFNKnlaIbXh3voGs7YsJTmD+dWikCYu00M7rq/E7y92Di5/QnXmfiCNC lPhxivU8c4pl7f2LK5wV4D4R2TWPupeLDZta+7EkNm6HRuu9QxpqOKumCKyJzjNfI/vKXqHksBi HE3sLwzVVn+F1bwfMDMNbmkmE5gQceOTvCQU2BLr92qPRO3TJp+zE2zoSBHfMV7yyukt8aXy+C7 +0yJMkcKFxXveJ8L6k8B/9Sa9VhiM3O7P5zcJbEEvK4f2MKd5HE8GwyKC6y8jXViK+L4G0/NDmf Y5NPV2JmP6dk1v734w+kDqOzxrCogiLSM8pYhMp6cgk1KSgyyr4Ts+Cl9W440s45dsH4aISs3EQ G/pL919eTfRLrVd5HZZrdgeZRbxQzf/5mO0+e+4mvY0SXm/+EbHXLu6zCqFZu2QFbccBpECsHti 1Ayk9dMMgIuUoU53ik9kQ4cy8IfFyJtbu0/eDmo6AP2N6TTftctPOPi88p7fG3VrpX/Zwt35/M5 RUaivx4dN/ow8yCQO/e7wOeV6cEqmM+C8vRndLhsC3l5Gb0f56tup1VgOF3N0uNI9FovLd4hjSS xrKD/hwBiQgiPYA== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D X-Debian-User: leitao Fix two error handling issues in kho_add_subtree(), where it doesn't handle the error path correctly. 1. If fdt_setprop() fails after the subnode has been created, the subnode is not removed. This leaves an incomplete node in the FDT (missing "preserved-data" or "blob-size" properties). 2. The fdt_setprop() return value (an FDT error code) is stored directly in err and returned to the caller, which expects -errno. Fix both by storing fdt_setprop() results in fdt_err, jumping to a new out_del_node label that removes the subnode on failure, and only setting err =3D 0 on the success path, otherwise returning -ENOMEM (instead of FDT_ERR_ errors that would come from fdt_setprop). Fixes: 3dc92c311498 ("kexec: add Kexec HandOver (KHO) generation helpers") Suggested-by: Pratyush Yadav Signed-off-by: Breno Leitao Reviewed-by: Mike Rapoport (Microsoft) --- kernel/liveupdate/kexec_handover.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_h= andover.c index 94762de1fe5f0..18509d8082ea7 100644 --- a/kernel/liveupdate/kexec_handover.c +++ b/kernel/liveupdate/kexec_handover.c @@ -762,19 +762,24 @@ int kho_add_subtree(const char *name, void *blob, siz= e_t size) goto out_pack; } =20 - err =3D fdt_setprop(root_fdt, off, KHO_SUB_TREE_PROP_NAME, - &phys, sizeof(phys)); - if (err < 0) - goto out_pack; + fdt_err =3D fdt_setprop(root_fdt, off, KHO_SUB_TREE_PROP_NAME, + &phys, sizeof(phys)); + if (fdt_err < 0) + goto out_del_node; =20 - err =3D fdt_setprop(root_fdt, off, KHO_SUB_TREE_SIZE_PROP_NAME, - &size_u64, sizeof(size_u64)); - if (err < 0) - goto out_pack; + fdt_err =3D fdt_setprop(root_fdt, off, KHO_SUB_TREE_SIZE_PROP_NAME, + &size_u64, sizeof(size_u64)); + if (fdt_err < 0) + goto out_del_node; =20 WARN_ON_ONCE(kho_debugfs_blob_add(&kho_out.dbg, name, blob, size, false)); =20 + err =3D 0; + goto out_pack; + +out_del_node: + fdt_del_node(root_fdt, off); out_pack: fdt_pack(root_fdt); =20 --- base-commit: 9763aa6c6df784d7159925c0b3bef4dfb791e84f change-id: 20260407-kho_fix_send-ae33f16d7502 Best regards, -- =20 Breno Leitao