From a5740a0a0276f9ec3c5ae428fdef68e38e12b2e8 Mon Sep 17 00:00:00 2001 From: "David P. Reed" Date: Wed, 14 Nov 2007 17:47:35 -0500 Subject: [PATCH] --- yaml --- r: 73899 b: refs/heads/master c: c399da0d97e06803e51085ec076b63a3168aad1b h: refs/heads/master i: 73897: 9661d177915abac099d6732b60fef96e9c22f66b 73895: d79068d9eb1ef6f0f5a85b67e6106e0c28e94abe v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/time_64.c | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index c1f3a381d9db..43a7e0011b49 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fa6a1a554b50cbb7763f6907e6fef927ead480d9 +refs/heads/master: c399da0d97e06803e51085ec076b63a3168aad1b diff --git a/trunk/arch/x86/kernel/time_64.c b/trunk/arch/x86/kernel/time_64.c index c821edc32216..4ad1f7a6a839 100644 --- a/trunk/arch/x86/kernel/time_64.c +++ b/trunk/arch/x86/kernel/time_64.c @@ -82,18 +82,15 @@ static int set_rtc_mmss(unsigned long nowtime) int retval = 0; int real_seconds, real_minutes, cmos_minutes; unsigned char control, freq_select; + unsigned long flags; /* - * IRQs are disabled when we're called from the timer interrupt, - * no need for spin_lock_irqsave() + * set_rtc_mmss is called when irqs are enabled, so disable irqs here */ - - spin_lock(&rtc_lock); - + spin_lock_irqsave(&rtc_lock, flags); /* * Tell the clock it's being set and stop it. */ - control = CMOS_READ(RTC_CONTROL); CMOS_WRITE(control | RTC_SET, RTC_CONTROL); @@ -138,7 +135,7 @@ static int set_rtc_mmss(unsigned long nowtime) CMOS_WRITE(control, RTC_CONTROL); CMOS_WRITE(freq_select, RTC_FREQ_SELECT); - spin_unlock(&rtc_lock); + spin_unlock_irqrestore(&rtc_lock, flags); return retval; }