From: Dan Aloni <da-x@monatomic.org>
To: Li Zefan <lizf@cn.fujitsu.com>
Cc: Aristeu Rozanski <aris@ruivo.org>,
Greg Kroah-Hartman <gregkh@suse.de>,
Linux Kernel List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] x86_64: fix a deadlock in set_rtc_mmss()
Date: Sat, 17 Nov 2007 10:34:52 +0200 [thread overview]
Message-ID: <20071117083452.GA8531@localdomain> (raw)
In-Reply-To: <473D0DD9.3000600@cn.fujitsu.com>
On Fri, Nov 16, 2007 at 11:26:17AM +0800, Li Zefan wrote:
> Aristeu Rozanski wrote:
> > Hello Dan,
> >> Patch is valid only for 2.6.23.x, guessing from the recent arch/ changes
> >> in 2.6.24-rc.
> >>
> >> set_rtc_mmss() was used to be called from interrupt context in 2.6.22,
> >> however in 2.6.23, it is called from a timer context, where interrupts
> >> are enabled. This patch ensures that rtc_interrupt() won't dead-lock
> >> with set_rtc_mmss().
> >
> >> diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c
> >> index 6241b50..8414236 100644
> >> --- a/arch/x86_64/kernel/time.c
> >> +++ b/arch/x86_64/kernel/time.c
> >> @@ -87,13 +87,14 @@ 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()
> >> */
> >>
> >> - spin_lock(&rtc_lock);
> >> + spin_lock_irqsave(&rtc_lock, flags);
> > I think it's a good idea to update or just remove the comment above.
> >
>
> David P. Reed has sent a patch to fix this bug before you.
>
> http://lkml.org/lkml/2007/11/14/435
Yes, missed by a day. Although that patch was aimed for 2.6.24-rc,
I am currently more concerned about the 2.6.23.x tree.
Greg, can this be added to 2.6.23-stable?
Signed-off-by: Dan Aloni <da-x@monatomic.org>
---
commit 26c05aa66d10e95de63d95a348023ada4827ceed
tree 7c12f2b35fcba31c9f62ba278b9d232406f80e83
parent ad1765c56c2178a09e87d123548a35f221e1fc05
author Dan Aloni <da-x@monatomic.org> Sat, 17 Nov 2007 10:31:01 +0200
committer Dan Aloni <da-x@monatomic.org> Sat, 17 Nov 2007 10:31:01 +0200
arch/x86_64/kernel/time.c | 10 +++-------
1 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c
index 6d48a4e..fde5796 100644
--- a/arch/x86_64/kernel/time.c
+++ b/arch/x86_64/kernel/time.c
@@ -87,13 +87,9 @@ 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()
- */
-
- spin_lock(&rtc_lock);
+ spin_lock_irqsave(&rtc_lock, flags);
/*
* Tell the clock it's being set and stop it.
@@ -143,7 +139,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;
}
--
Dan Aloni
XIV LTD, http://www.xivstorage.com
da-x (at) monatomic.org, dan (at) xiv.co.il
next prev parent reply other threads:[~2007-11-17 8:35 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-15 16:55 [PATCH] x86_64: fix a deadlock in set_rtc_mmss() Dan Aloni
2007-11-15 18:30 ` Aristeu Rozanski
2007-11-16 3:26 ` Li Zefan
2007-11-17 8:34 ` Dan Aloni [this message]
2007-11-20 7:59 ` Thomas Gleixner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071117083452.GA8531@localdomain \
--to=da-x@monatomic.org \
--cc=aris@ruivo.org \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.