Author: kib
Date: Wed Sep 28 09:46:29 2016
New Revision: 306403
URL: https://svnweb.freebsd.org/changeset/base/306403

Log:
  MFC r306089:
  Make resettodr_lock accessible outside subr_rtc.c.  Protect
  CLOCK_GETTIME() with the lock.

Modified:
  stable/11/sys/kern/subr_rtc.c
  stable/11/sys/sys/clock.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/kern/subr_rtc.c
==============================================================================
--- stable/11/sys/kern/subr_rtc.c       Wed Sep 28 09:43:23 2016        
(r306402)
+++ stable/11/sys/kern/subr_rtc.c       Wed Sep 28 09:46:29 2016        
(r306403)
@@ -75,7 +75,7 @@ __FBSDID("$FreeBSD$");
 static device_t clock_dev = NULL;
 static long clock_res;
 static struct timespec clock_adj;
-static struct mtx resettodr_lock;
+struct mtx resettodr_lock;
 MTX_SYSINIT(resettodr_init, &resettodr_lock, "tod2rl", MTX_DEF);
 
 /* XXX: should be kern. now, it's no longer machdep.  */
@@ -132,7 +132,9 @@ inittodr(time_t base)
                goto wrong_time;
        }
        /* XXX: We should poll all registered RTCs in case of failure */
+       mtx_lock(&resettodr_lock);
        error = CLOCK_GETTIME(clock_dev, &ts);
+       mtx_unlock(&resettodr_lock);
        if (error != 0 && error != EINVAL) {
                printf("warning: clock_gettime failed (%d), the system time "
                    "will not be set accurately\n", error);

Modified: stable/11/sys/sys/clock.h
==============================================================================
--- stable/11/sys/sys/clock.h   Wed Sep 28 09:43:23 2016        (r306402)
+++ stable/11/sys/sys/clock.h   Wed Sep 28 09:46:29 2016        (r306403)
@@ -54,6 +54,7 @@
  */
 extern int tz_minuteswest;
 extern int tz_dsttime;
+extern struct mtx resettodr_lock;
 
 int utc_offset(void);
 
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to