]> err.no Git - util-linux/commitdiff
Disable the fallback clause in hwclock when /dev/rtc cannot be opened.
authorTim Gardner <tim.gardner@canonical.com>
Thu, 25 Sep 2008 13:09:25 +0000 (07:09 -0600)
committerLaMont Jones <lamont@debian.org>
Thu, 25 Sep 2008 14:58:11 +0000 (08:58 -0600)
hwclock should not access the x86 RTC using I/O instructions unless explicitly
requested from the command line (--directisa). This issue was encountered
while debugging a boot time race when hwclock.sh was run in parallel.

Addresses-Ubuntu-Bug: 274402
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Signed-off-by: LaMont Jones <lamont@debian.org>
hwclock/hwclock.c

index 48b47ade88fa1ececa3930bf15c9e35615fde513..94e06c7e1223be7262ab367ef15bc80906bfdb8a 100644 (file)
@@ -1031,8 +1031,18 @@ determine_clock_access_method(const bool user_requests_ISA) {
   if (!ur)
          ur = probe_for_kd_clock();
 
+  /*
+   * This final clause is a really bad idea on x86/AT PCs. You run the
+   * risk of a race condition with another copy of hwclock
+   * that already has /dev/rtc open. The fallback case on
+   * x86 is to then raise I/O priviledge level and access
+   * the RTC CMOS directly using I/O instructions. Simultaneous
+   * access like that can really hose the RTC.
+   */
+#if !defined(__i386__)
   if (!ur && !user_requests_ISA)
          ur = probe_for_cmos_clock();
+#endif
 
   if (debug) {
          if (ur)