lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260210072754.178963-1-zhanxusheng@xiaomi.com>
Date: Tue, 10 Feb 2026 15:27:54 +0800
From: Zhan Xusheng <zhanxusheng1024@...il.com>
To: Frederic Weisbecker <frederic@...nel.org>
Cc: linux-kernel@...r.kernel.org,
	Zhan Xusheng <zhanxusheng@...omi.com>
Subject: [PATCH] clockevents: Add error handling and rollback in tick_init_sysfs()

Ensure proper error handling and logging when creating device files for
each CPU. If device creation or file creation fails, the function now
properly unregisters the device and removes any previously created files
to maintain system consistency.

Signed-off-by: Zhan Xusheng <zhanxusheng@...omi.com>
---
 kernel/time/clockevents.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c
index eaae1ce9f060..daa875f1d37c 100644
--- a/kernel/time/clockevents.c
+++ b/kernel/time/clockevents.c
@@ -756,12 +756,24 @@ static int __init tick_init_sysfs(void)
 		dev->id = cpu;
 		dev->bus = &clockevents_subsys;
 		err = device_register(dev);
-		if (!err)
-			err = device_create_file(dev, &dev_attr_current_device);
-		if (!err)
-			err = device_create_file(dev, &dev_attr_unbind_device);
 		if (err)
 			return err;
+
+		err = device_create_file(dev, &dev_attr_current_device);
+		if (err)
+			goto err_unregister;
+
+		err = device_create_file(dev, &dev_attr_unbind_device);
+		if (err)
+			goto err_remove_file;
+
+		continue;
+
+err_remove_file:
+		device_remove_file(dev, &dev_attr_current_device);
+err_unregister:
+		device_unregister(dev);
+		return err;
 	}
 	return tick_broadcast_init_sysfs();
 }
-- 
2.43.0


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ