From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f175.google.com (mail-qk1-f175.google.com [209.85.222.175]) (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 3A32F22B8AB for ; Fri, 3 Jul 2026 16:53:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783097624; cv=none; b=Jn7FkBYt/NVPMIMcJjPBo8KdSFTDWeu+HMckY/QfE7JyKpIUUdpCn/6a9DEAXsAfwtoYu8yBKnooZ0bTBkuI+vRctuYIOM/qAMkqzpNniTCUeykHeqHyditvcf9KT3KzHH62B47hZPDwvJc6ZKcyz6WeGRZr/bAVSE/gGjolUAA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783097624; c=relaxed/simple; bh=X3+3f85f1tJfkYhGMyYTRXG/9eqQhGet/NnFMwa+0qY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=rb6k27X45gttC30JqyLyuRtDf8cwUgZBihB6Rr/ZkF29oepXLSMRquNRwDpVlPReWtOewNBUxAywXnpVk9E46pm/PVHE7buqvasBFzglGZrF7w/NDz1EEcNWGfkyVNIINIWLOt2ifmGtQ8VchXuwzEUslW96epFx3RrbLMrx68k= 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=lQpFHD3J; arc=none smtp.client-ip=209.85.222.175 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="lQpFHD3J" Received: by mail-qk1-f175.google.com with SMTP id af79cd13be357-92c7a0a701aso36916785a.3 for ; Fri, 03 Jul 2026 09:53:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783097622; x=1783702422; 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=FOiH55sPdQ9JRtOfOJk7K0fxpeIXNfVgV8Pewf7cdbU=; b=lQpFHD3J1j0Hvyw3vvFBjhHiQOadkU7/ZwyxprGU8RcOlgVVboWrli/5hTLYEKk2D6 XBcvOGUraqy+YVYfl1umQazsH4ifWgRJrXYoQogLbQokrg4ET1WlZ/mNbDkSPhTkTeQx 74RasyEEC9flm1iXTVFyQc2gCwgY8hMkN38qDX5d3KwL6qANeqIy8gz3YAzh0JTviUhx mp2LEALXZ/rTwUQl8NjFRMIV8784mGcV19juc97POVIxxGzkBZf8j/sScueVvsYMhEun +cf54wNErDhKndlYEuSmT3rxTWUiKN2ojqP+pxUyY7P/qd5ULxcRF7OVUY6E2CBQlAiI Wt8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783097622; x=1783702422; 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=FOiH55sPdQ9JRtOfOJk7K0fxpeIXNfVgV8Pewf7cdbU=; b=bhpcw1D7rtm+d/hDBMxKDZ6ZWXM11HC2XMTNDxzdOV2eoel66Xxg9SJEM7mEB8HMG9 a95q+5qgyeQe/TzLeLdW262He1GKKiLVpUsTTPSS+UzYFxjtIZzjqkaW0Mjqvp2VyJI/ QsG8ee/nOYulZX7z+FUZbz0MdkkFMFSsZbTWEdNAnVaMVwmN2pOjJqd+wEWEWHmC49N2 9DYYsl0krLA8cduBQtLpU+LKKs9QwEf2r3oiHZJOvsETrVzJu247U3VCBA3U1gJs7q0Z kwmzcOl480aBjGYyEoV1DfDDl+EJMf2iRGDfcjgoQ0NSqZKrQgeMq4MTZUJ9o/xp2hlt uCUQ== X-Forwarded-Encrypted: i=1; AFNElJ+KuMouslHApL7FVSTTQXEpH3QaT/oV8V7u96o8hXqXb7MIu2uaa9dZQ0XNnv92U2Qx8l76FrU/GkiwZow=@vger.kernel.org X-Gm-Message-State: AOJu0YzK4gin8ehDjBVX2oHs9K1UUKpdX6SHiuOKba0K3qXxvHln5AeA xJSZv1LjZ4AsnyKhIiCW2rmra7XLptIp2Lixkgjw6q8fpP936TlCYbWP X-Gm-Gg: AfdE7ckvXrVTM6AWhlJ/kd82Xldo0GM5aRM032d9ffoBDILoszcO27IoUqFUIuyLtOT UycfirRw3S8TiHRjcva7mZx12J170hSUkR68Qf7POEO38w3KBe4zGjetarrQqtJ+GXu1emKEP1G oCAr1gaE3npKaCpSEktqqqMCXMiK3IMBC+1J4wXGJ5x0/SR2j+jArgLAuOBv97BIDxDu0YBjSdF rNJxdj6rf4RCjm/ix6y7ZLVHOnAOmVU4l8glQ5AQ78OaqPLKG++e8q88Q+d3/aUFhxkA+g1vOud Ro3Ki2lZMPPOH8unOQp2XnLRHSXLNY9QOqCGEjgF1lTL1YXQqzmabtmr/f/3u71oKj2lb1KyWua HcZep5UceO5SacXmK8ePn2107hhBERBnmxe4sKUdmsiiQ+7R0jc7ud73juFheAfHiMqZECnjJ69 PigGJ6zbvLBlVo9QkO1zNaZ94Wfd4Xpj/gxN2J7BS4aziT/tqNQAJk03xBvZMKqN7QktC3Vfyvt jm5HUCJB2HMinM= X-Received: by 2002:a05:620a:4087:b0:920:bc4a:6d9f with SMTP id af79cd13be357-92e9a3755b8mr36840685a.25.1783097622034; Fri, 03 Jul 2026 09:53:42 -0700 (PDT) Received: from i4-gl-tmk5904.ad.psu.edu ([130.203.156.186]) by smtp.gmail.com with ESMTPSA id af79cd13be357-92e90ba754fsm206532685a.18.2026.07.03.09.53.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jul 2026 09:53:41 -0700 (PDT) From: Yuho Choi To: John Stultz , Thomas Gleixner Cc: Stephen Boyd , linux-kernel@vger.kernel.org, Yuho Choi Subject: [PATCH v1] timekeeping: Unwind aux clock sysfs children on failure Date: Fri, 3 Jul 2026 12:53:37 -0400 Message-ID: <20260703165337.168445-1-dbgh9129@gmail.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: 8bit tk_aux_sysfs_init() creates one child kobject per auxiliary clock. If a later child or sysfs group creation fails, the current error path only puts the parent kobjects and leaves earlier children and groups behind. Store the child kobjects during init and remove the successfully created groups and kobjects on failure. Fixes: 7b5ab04f035f ("timekeeping: Fix resource leak in tk_aux_sysfs_init() error paths") Signed-off-by: Yuho Choi --- kernel/time/timekeeping.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index b1b5ec43c0f2..fe629a44d628 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -3313,7 +3313,9 @@ static const struct attribute_group aux_clock_enable_attr_group = { static int __init tk_aux_sysfs_init(void) { struct kobject *auxo, *tko = kobject_create_and_add("time", kernel_kobj); + struct kobject *clks[MAX_AUX_CLOCKS]; int ret = -ENOMEM; + int i; if (!tko) return ret; @@ -3322,21 +3324,28 @@ static int __init tk_aux_sysfs_init(void) if (!auxo) goto err_clean; - for (int i = 0; i < MAX_AUX_CLOCKS; i++) { + for (i = 0; i < MAX_AUX_CLOCKS; i++) { char id[2] = { [0] = '0' + i, }; - struct kobject *clk = kobject_create_and_add(id, auxo); + clks[i] = kobject_create_and_add(id, auxo); - if (!clk) { + if (!clks[i]) { ret = -ENOMEM; - goto err_clean; + goto err_clks; } - ret = sysfs_create_group(clk, &aux_clock_enable_attr_group); + ret = sysfs_create_group(clks[i], &aux_clock_enable_attr_group); if (ret) - goto err_clean; + goto err_clk; } return 0; +err_clk: + kobject_put(clks[i]); +err_clks: + while (--i >= 0) { + sysfs_remove_group(clks[i], &aux_clock_enable_attr_group); + kobject_put(clks[i]); + } err_clean: kobject_put(auxo); kobject_put(tko); -- 2.43.0