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]
Date:	Tue, 12 Dec 2006 11:49:13 -0800
From:	David Brownell <david-b@...bell.net>
To:	Alessandro Zummo <alessandro.zummo@...ertech.it>,
	Linux Kernel list <linux-kernel@...r.kernel.org>
Subject: [patch 2.6.19-git] rtc framework:  rtc_wkalrm.enabled reporting updates

Fix a glitch in the procfs dumping of whether the alarm IRQ is enabled:
use the traditional name (from drivers/char/rtc.c and many other places)
of "alarm_IRQ", not "alrm_wakeup" (which didn't even match the efirtc
code, which originated that reporting API).

Also, update a few of the RTC drivers to stop providing that duplicate
status, and/or to expose it properly when reporting the alarm state.
We really don't want every RTC driver doing their own thing here...

Signed-off-by: David Brownell <dbrownell@...rs.sourceforge.net>

---
 drivers/rtc/rtc-at91rm9200.c |    5 +++--
 drivers/rtc/rtc-omap.c       |    3 +--
 drivers/rtc/rtc-proc.c       |    2 +-
 drivers/rtc/rtc-s3c.c        |    6 ++----
 drivers/rtc/rtc-sa1100.c     |    4 +---
 5 files changed, 8 insertions(+), 12 deletions(-)

Index: g26/drivers/rtc/rtc-proc.c
===================================================================
--- g26.orig/drivers/rtc/rtc-proc.c	2006-12-12 11:25:07.000000000 -0800
+++ g26/drivers/rtc/rtc-proc.c	2006-12-12 11:25:41.000000000 -0800
@@ -65,7 +65,7 @@ static int rtc_proc_show(struct seq_file
 			seq_printf(seq, "%02d\n", alrm.time.tm_mday);
 		else
 			seq_printf(seq, "**\n");
-		seq_printf(seq, "alrm_wakeup\t: %s\n",
+		seq_printf(seq, "alarm_IRQ\t: %s\n",
 				alrm.enabled ? "yes" : "no");
 		seq_printf(seq, "alrm_pending\t: %s\n",
 				alrm.pending ? "yes" : "no");
Index: g26/drivers/rtc/rtc-at91rm9200.c
===================================================================
--- g26.orig/drivers/rtc/rtc-at91rm9200.c	2006-12-12 11:13:18.000000000 -0800
+++ g26/drivers/rtc/rtc-at91rm9200.c	2006-12-12 11:25:41.000000000 -0800
@@ -137,6 +137,9 @@ static int at91_rtc_readalarm(struct dev
 	tm->tm_yday = rtc_year_days(tm->tm_mday, tm->tm_mon, tm->tm_year);
 	tm->tm_year = at91_alarm_year - 1900;
 
+	alrm->enabled = (at91_sys_read(AT91_RTC_IMR) & AT91_RTC_ALARM)
+			? 1 : 0;
+
 	pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __FUNCTION__,
 		1900 + tm->tm_year, tm->tm_mon, tm->tm_mday,
 		tm->tm_hour, tm->tm_min, tm->tm_sec);
@@ -223,8 +226,6 @@ static int at91_rtc_proc(struct device *
 {
 	unsigned long imr = at91_sys_read(AT91_RTC_IMR);
 
-	seq_printf(seq, "alarm_IRQ\t: %s\n",
-			(imr & AT91_RTC_ALARM) ? "yes" : "no");
 	seq_printf(seq, "update_IRQ\t: %s\n",
 			(imr & AT91_RTC_ACKUPD) ? "yes" : "no");
 	seq_printf(seq, "periodic_IRQ\t: %s\n",
Index: g26/drivers/rtc/rtc-s3c.c
===================================================================
--- g26.orig/drivers/rtc/rtc-s3c.c	2006-12-12 11:08:08.000000000 -0800
+++ g26/drivers/rtc/rtc-s3c.c	2006-12-12 11:25:41.000000000 -0800
@@ -191,6 +191,8 @@ static int s3c_rtc_getalarm(struct devic
 
 	alm_en = readb(base + S3C2410_RTCALM);
 
+	alrm->enabled = (alm_en & S3C2410_RTCALM_ALMEN) ? 1 : 0;
+
 	pr_debug("read alarm %02x %02x.%02x.%02x %02x/%02x/%02x\n",
 		 alm_en,
 		 alm_tm->tm_year, alm_tm->tm_mon, alm_tm->tm_mday,
@@ -331,12 +333,8 @@ static int s3c_rtc_ioctl(struct device *
 
 static int s3c_rtc_proc(struct device *dev, struct seq_file *seq)
 {
-	unsigned int rtcalm = readb(s3c_rtc_base + S3C2410_RTCALM);
 	unsigned int ticnt = readb(s3c_rtc_base + S3C2410_TICNT);
 
-	seq_printf(seq, "alarm_IRQ\t: %s\n",
-		   (rtcalm & S3C2410_RTCALM_ALMEN) ? "yes" : "no" );
-
 	seq_printf(seq, "periodic_IRQ\t: %s\n",
 		     (ticnt & S3C2410_TICNT_ENABLE) ? "yes" : "no" );
 
Index: g26/drivers/rtc/rtc-sa1100.c
===================================================================
--- g26.orig/drivers/rtc/rtc-sa1100.c	2006-12-12 11:08:08.000000000 -0800
+++ g26/drivers/rtc/rtc-sa1100.c	2006-12-12 11:25:41.000000000 -0800
@@ -289,9 +289,7 @@ static int sa1100_rtc_set_alarm(struct d
 
 static int sa1100_rtc_proc(struct device *dev, struct seq_file *seq)
 {
-	seq_printf(seq, "trim/divider\t: 0x%08lx\n", RTTR);
-	seq_printf(seq, "alarm_IRQ\t: %s\n",
-			(RTSR & RTSR_ALE) ? "yes" : "no" );
+	seq_printf(seq, "trim/divider\t: 0x%08x\n", (u32) RTTR);
 	seq_printf(seq, "update_IRQ\t: %s\n",
 			(RTSR & RTSR_HZE) ? "yes" : "no");
 	seq_printf(seq, "periodic_IRQ\t: %s\n",
Index: g26/drivers/rtc/rtc-omap.c
===================================================================
--- g26.orig/drivers/rtc/rtc-omap.c	2006-12-12 11:08:08.000000000 -0800
+++ g26/drivers/rtc/rtc-omap.c	2006-12-12 11:25:41.000000000 -0800
@@ -279,9 +279,8 @@ static int omap_rtc_read_alarm(struct de
 	local_irq_enable();
 
 	bcd2tm(&alm->time);
-	alm->pending = !!(rtc_read(OMAP_RTC_INTERRUPTS_REG)
+	alm->enabled = !!(rtc_read(OMAP_RTC_INTERRUPTS_REG)
 			& OMAP_RTC_INTERRUPTS_IT_ALARM);
-	alm->enabled = alm->pending && device_may_wakeup(dev);
 
 	return 0;
 }
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ