diff options
| -rw-r--r-- | arch/x86/kernel/time_64.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/arch/x86/kernel/time_64.c b/arch/x86/kernel/time_64.c index c821edc32216..4ad1f7a6a839 100644 --- a/arch/x86/kernel/time_64.c +++ b/arch/x86/kernel/time_64.c | |||
| @@ -82,18 +82,15 @@ static int set_rtc_mmss(unsigned long nowtime) | |||
| 82 | int retval = 0; | 82 | int retval = 0; |
| 83 | int real_seconds, real_minutes, cmos_minutes; | 83 | int real_seconds, real_minutes, cmos_minutes; |
| 84 | unsigned char control, freq_select; | 84 | unsigned char control, freq_select; |
| 85 | unsigned long flags; | ||
| 85 | 86 | ||
| 86 | /* | 87 | /* |
| 87 | * IRQs are disabled when we're called from the timer interrupt, | 88 | * set_rtc_mmss is called when irqs are enabled, so disable irqs here |
| 88 | * no need for spin_lock_irqsave() | ||
| 89 | */ | 89 | */ |
| 90 | 90 | spin_lock_irqsave(&rtc_lock, flags); | |
| 91 | spin_lock(&rtc_lock); | ||
| 92 | |||
| 93 | /* | 91 | /* |
| 94 | * Tell the clock it's being set and stop it. | 92 | * Tell the clock it's being set and stop it. |
| 95 | */ | 93 | */ |
| 96 | |||
| 97 | control = CMOS_READ(RTC_CONTROL); | 94 | control = CMOS_READ(RTC_CONTROL); |
| 98 | CMOS_WRITE(control | RTC_SET, RTC_CONTROL); | 95 | CMOS_WRITE(control | RTC_SET, RTC_CONTROL); |
| 99 | 96 | ||
| @@ -138,7 +135,7 @@ static int set_rtc_mmss(unsigned long nowtime) | |||
| 138 | CMOS_WRITE(control, RTC_CONTROL); | 135 | CMOS_WRITE(control, RTC_CONTROL); |
| 139 | CMOS_WRITE(freq_select, RTC_FREQ_SELECT); | 136 | CMOS_WRITE(freq_select, RTC_FREQ_SELECT); |
| 140 | 137 | ||
| 141 | spin_unlock(&rtc_lock); | 138 | spin_unlock_irqrestore(&rtc_lock, flags); |
| 142 | 139 | ||
| 143 | return retval; | 140 | return retval; |
| 144 | } | 141 | } |
