]> err.no Git - util-linux/commit
hwclock: allow setting of RTC when it contains invalid data
authorPeter Tyser <ptyser@xes-inc.com>
Wed, 29 Dec 2010 22:25:43 +0000 (16:25 -0600)
committerKarel Zak <kzak@redhat.com>
Thu, 30 Dec 2010 23:31:30 +0000 (00:31 +0100)
commit5606df53d3997e3495d78f6ae6b9dd45c46861a2
treef01c96e32472373a099610bdd31752bc9bc2092b
parent3d6e5c355d10dcd9d6336331c96935013ffcd3b1
hwclock: allow setting of RTC when it contains invalid data

In some cases the date/time stored in an RTC can be corrupted, eg due to
loss of power, before its been initially set, etc.  When this occurs
the RTC_RD_TIME ioctl can fail since the Linux kernel determines that
the RTC contains invalid data.  Currently, when setting an RTC using
hwclock, hwclock performs a number of RTC_RD_TIME ioctls before setting
the RTC.  When one of these ioctls fails, hwclock bombs out and the
corrupted RTC data can't be overwritten.  Thus once an RTC is corrupted,
it can't be fixed via hwclock*.

To work around the above issue we can make hwclock not exit when a
RTC_RD_TIME failure occurs during the process of setting the RTC.  This
allows the RTC to be set even when it contains an invalid value,
although it is not synchronized to a clock tick before it is set.

* 'hwclock --utc --noadjfile --set --date="11/23/10 17:19:00' currently
works to fix a corrupted RTC, but a user couldn't determine this without
digging through the source code.

Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
hwclock/hwclock.c