From nobody Sun Feb 8 12:14:38 2026 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C61562E7BDE for ; Wed, 4 Feb 2026 07:33:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770190426; cv=none; b=Gy568wMkBSv5p/YdG4uwaReXGHQLktOx861Mzzip2NWaE0J6FkkAHjxowXsOBrePBK04g+0B8NYmxvUTCT3d21ab0LV8mDAkvjuW9CLGabkZqioiR3bdXciH3+ryiMAnPCEB5yfII5xg5z9WXPVxAOgTa4p15gHffrWpWxv4HJk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770190426; c=relaxed/simple; bh=y0lLRplmchQO2R4mJcLd3xtv2aBqOSNYiot3Dw8ruNA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=qgM7trn/CcDt3Gq9jyRzFg2j43YrIlAng+sYdHYgSPIvYg+fr+KI8LWzXPZ/rPccrTncyHwm+bo5O6ThP4qd4wqIw4ftpYFUJnjB88oHQOa9jSGSggnfQKYYuk3oXcawYBC2/7yShUQbcyxsO8lP3MRW/DVPKpFq2mxFdupBsX0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=E5JpMtyC; arc=none smtp.client-ip=209.85.214.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="E5JpMtyC" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2a09757004cso53226405ad.3 for ; Tue, 03 Feb 2026 23:33:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770190426; x=1770795226; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=zLUeYnFiiOX0XXQz1RfFsQefwXUxe1E5aBmpO9NzvTk=; b=E5JpMtyC/ndlR13Fv8ylv4+Bn4XgZjifGlZ8uAKb1YAXNHTBJUAgHD/iV7/Dejwo+g A4CMfA2gV9HVptVgls8c+mEAmkbIDeVbeqEAs0apLszq5slH0xEDB6aXI57M+i8ynyBY mj9bJ63KuW62Q0sGfgvo4fkut1w5gJ23PBmDeLQzE04mED5CCydahEtCKvfVKTc/hHe+ kpYIJYCnxpYzc46WWRymFadjLb25tGK4kchBSM0F+YXFMGkrhGgOCI9lqjGr76bG64JA FfQdOYhURGzSonNI5KQA0loctz34F6kkaO5Bk1yPKTdURxEC2jtssDKjg4OBVh5IcInZ jY9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770190426; x=1770795226; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=zLUeYnFiiOX0XXQz1RfFsQefwXUxe1E5aBmpO9NzvTk=; b=His2VXWg048kMt1kfh2g4YhHiCMNrYGeasYEcQ9wUs4MJ1MlzVdkBobBD9K1nY7ksv ve1zMrl/jLAbJ0lVwq+ZO8ixp4hV2v6HGdd0Bg4gQqK1zvv0TjchzBRz3wu04311AA4W dYeN/GjTmmOEQ1HgW6v1LeHGmkHKo6gzwq87evOR9QTgJG3bilJt5ku8hQQKswaw9e7E GKCbNhpRvM4DT5/j/Rsogihjm1MjQ5+RW1PrjiQ9QLQ/fBhQW/rpyHh9lm5sOPkcIF8V ni3sOcfx+S2ZDyAACVDadSvXvDTm/cJ1mrWju2QPk4QwIAfUIuYilj+25n4hdNpkEhzB TS1Q== X-Gm-Message-State: AOJu0YyP/X4FfULhmlEhxVNSy58rCBuFe3i62YOPO52EMXiKwFKJbU9/ jb50q95mQt3DvhU7iFnoGL0MC0QEadxjZsqn97ags1xMEk7/AYeMoRneQj1xVg== X-Gm-Gg: AZuq6aKqNAd7axhEC9Pw+ng+ke7rzJ1qlUMMz40zk3iRS0uxylBWrqKJRTraHWkHQgZ vROuE1qA+kMpW1csHVsjkdJ1xKdRpaX5KbObfZHDnoDDTNXV10aKuu3WkNZ8QSzrAMUEG91zfYu bqfyT13cqCyOA+orBSgwDpngqnrbyrpfan19To2iif9WsaWvCBgXTm15mvFjuMm5sZ7qQYc+7OL zv2s3vtJpQaZ6NoFSYucQOoHu0PKBWyjGqxRuIj1Gy+g2ozTLgI9Al3C/s18gPnKDuW3a04vTTb ah1s1AicMQpoUtk7pIfOYtsRLluW5kcC5quGMXSm5dF6Ofw8WApCdSU8gR4s5UQNDMYjAj6exZB xDjEtLFjI0+WfcC9eACskTJ5SmeW8JxLFskbq9AopMleU1M2tVXit/p+8eHHy1vfSSsazQ7o02m tCei5ZA2LJbSLvkueigH1++gIEZn1oqamUg3g= X-Received: by 2002:a17:902:dacd:b0:2a0:d403:a2e3 with SMTP id d9443c01a7336-2a933fa7933mr21070665ad.37.1770190425988; Tue, 03 Feb 2026 23:33:45 -0800 (PST) Received: from DESKTOP-MOQC9AF.mioffice.cn ([43.224.245.239]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a9338913ecsm14501965ad.32.2026.02.03.23.33.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Feb 2026 23:33:45 -0800 (PST) From: Zhan Xusheng X-Google-Original-From: Zhan Xusheng To: Frederic Weisbecker Cc: linux-kernel@vger.kernel.org, Zhan Xusheng Subject: [PATCH] timers/migration: Improve error handling and resource cleanup in tmigr_setup_groups Date: Wed, 4 Feb 2026 15:33:37 +0800 Message-ID: <20260204073337.57222-1-zhanxusheng@xiaomi.com> X-Mailer: git-send-email 2.43.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" Introduce a new helper function `tmigr_clean_groups` to centralize cleanup of groups when an error occurs. This simplifies the error handling and ensures consistent resource management. Additionally, redundant error checks and resource freeing logic were removed. Signed-off-by: Zhan Xusheng --- kernel/time/timer_migration.c | 37 +++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c index 18dda1aa782d..a3b6b0af5900 100644 --- a/kernel/time/timer_migration.c +++ b/kernel/time/timer_migration.c @@ -1750,6 +1750,29 @@ static void tmigr_connect_child_parent(struct tmigr_= group *child, trace_tmigr_connect_child_parent(child); } =20 +/** + * tmigr_clean_groups - Clean up groups in the given level range and free = memory + * @stack: The stack holding groups + * @start_lvl: The starting level to clean from + * @end_lvl: The ending level to clean up to + * + * This function iterates over the stack from start_lvl to end_lvl and rem= oves the + * groups from the list and frees the allocated memory. It is used to clea= n up + * groups when an error occurs. + */ +static void tmigr_clean_groups(struct tmigr_group **stack, + int start_lvl, int end_lvl) +{ + struct tmigr_group *group; + int i =3D end_lvl; + + for (; i >=3D start_lvl; i--) { + group =3D stack[i]; + list_del(&group->list); + kfree(group); + } +} + static int tmigr_setup_groups(unsigned int cpu, unsigned int node, struct tmigr_group *start, bool activate) { @@ -1774,7 +1797,10 @@ static int tmigr_setup_groups(unsigned int cpu, unsi= gned int node, if (IS_ERR(group)) { err =3D PTR_ERR(group); i--; - break; + /* Clean up already allocated groups. */ + tmigr_clean_groups(stack, start_lvl, i); + /* Exit after cleanup. */ + goto out; } =20 top =3D i; @@ -1803,12 +1829,6 @@ static int tmigr_setup_groups(unsigned int cpu, unsi= gned int node, for (; i >=3D start_lvl; i--) { group =3D stack[i]; =20 - if (err < 0) { - list_del(&group->list); - kfree(group); - continue; - } - WARN_ON_ONCE(i !=3D group->level); =20 /* @@ -1832,9 +1852,6 @@ static int tmigr_setup_groups(unsigned int cpu, unsig= ned int node, } } =20 - if (err < 0) - goto out; - if (activate) { struct tmigr_walk data; union tmigr_state state; --=20 2.43.0