Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b35692eb authored by Ralf Baechle's avatar Ralf Baechle
Browse files

[CHAR] ds1286: Fix handling of seconds in RTC_ALM_SET ioctl.



 o Fix use of uninitialized variable sec.
 o Make the RTC_ALM_SET ioctl return -EINVAL for non-zero seconds - the
   DS1286 has no second field for the alarm time.
 o Replace the obscure BIN_TO_BCD macro with BIN2BCD.

Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 45592145
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -197,6 +197,7 @@ static int ds1286_ioctl(struct inode *inode, struct file *file,

		hrs = alm_tm.tm_hour;
		min = alm_tm.tm_min;
		sec = alm_tm.tm_sec;

		if (hrs >= 24)
			hrs = 0xff;
@@ -204,9 +205,11 @@ static int ds1286_ioctl(struct inode *inode, struct file *file,
		if (min >= 60)
			min = 0xff;

		BIN_TO_BCD(sec);
		BIN_TO_BCD(min);
		BIN_TO_BCD(hrs);
		if (sec != 0)
			return -EINVAL;

		min = BIN2BCD(min);
		min = BIN2BCD(hrs);

		spin_lock(&ds1286_lock);
		rtc_write(hrs, RTC_HOURS_ALARM);