2008-08-11 13:44:12

by Russell King

[permalink] [raw]
Subject: [BUG] rtc uie emulation deadlocks

With CONFIG_RTC_INTF_DEV_UIE_EMUL=y, hwclock deadlocks in rtc_read_time
due to:

static long rtc_dev_ioctl(struct file *file,
unsigned int cmd, unsigned long arg)
{
err = mutex_lock_interruptible(&rtc->ops_lock);
if (err)
return err;
...
switch (cmd) {
#ifdef CONFIG_RTC_INTF_DEV_UIE_EMUL
case RTC_UIE_OFF:
clear_uie(rtc);
break;

case RTC_UIE_ON:
err = set_uie(rtc);
#endif
}

static int set_uie(struct rtc_device *rtc)
{
err = rtc_read_time(rtc, &tm);
...

int rtc_read_time(struct rtc_device *rtc, struct rtc_time *tm)
{
err = mutex_lock_interruptible(&rtc->ops_lock);

So we try to take the same lock twice... Not good.

The locking looks a rather random in there, so I'm not going to try to
create a patch.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of:


2008-08-19 07:53:51

by Andrew Morton

[permalink] [raw]
Subject: Re: [BUG] rtc uie emulation deadlocks

On Mon, 11 Aug 2008 14:43:39 +0100 Russell King <[email protected]> wrote:

> With CONFIG_RTC_INTF_DEV_UIE_EMUL=y, hwclock deadlocks in rtc_read_time
> due to:
>
> static long rtc_dev_ioctl(struct file *file,
> unsigned int cmd, unsigned long arg)
> {
> err = mutex_lock_interruptible(&rtc->ops_lock);
> if (err)
> return err;
> ...
> switch (cmd) {
> #ifdef CONFIG_RTC_INTF_DEV_UIE_EMUL
> case RTC_UIE_OFF:
> clear_uie(rtc);
> break;
>
> case RTC_UIE_ON:
> err = set_uie(rtc);
> #endif
> }
>
> static int set_uie(struct rtc_device *rtc)
> {
> err = rtc_read_time(rtc, &tm);
> ...
>
> int rtc_read_time(struct rtc_device *rtc, struct rtc_time *tm)
> {
> err = mutex_lock_interruptible(&rtc->ops_lock);
>
> So we try to take the same lock twice... Not good.
>
> The locking looks a rather random in there, so I'm not going to try to
> create a patch.
>

Looks like this was caused by

commit 5ad31a575157147b43fa84ef1e21471661653878
Author: David Brownell <[email protected]>
Date: Wed Jul 23 21:30:33 2008 -0700

rtc: remove BKL for ioctl()

2008-08-19 17:18:54

by David Brownell

[permalink] [raw]
Subject: Re: [BUG] rtc uie emulation deadlocks


--- Andrew Morton <[email protected]> wrote:

> On Mon, 11 Aug 2008 14:43:39 +0100 Russell King
> <[email protected]> wrote:
>
> > The locking looks a rather random in there, so I'm not going to try to
> > create a patch.
> >
>
> Looks like this was caused by
>
> commit 5ad31a575157147b43fa84ef1e21471661653878
> Author: David Brownell <[email protected]>
> Date: Wed Jul 23 21:30:33 2008 -0700
>
> rtc: remove BKL for ioctl()

I'm sure I saw someone else's fixup patch for that a couple weeks ago.
(Looks). Yes:

http://groups.google.com/group/rtc-linux/browse_thread/thread/ad65b883739f8c92#

2008-08-19 20:16:42

by Andrew Morton

[permalink] [raw]
Subject: Re: [BUG] rtc uie emulation deadlocks

On Tue, 19 Aug 2008 10:12:04 -0700 (PDT)
David Brownell <[email protected]> wrote:

>
> --- Andrew Morton <[email protected]> wrote:
>
> > On Mon, 11 Aug 2008 14:43:39 +0100 Russell King
> > <[email protected]> wrote:
> >
> > > The locking looks a rather random in there, so I'm not going to try to
> > > create a patch.
> > >
> >
> > Looks like this was caused by
> >
> > commit 5ad31a575157147b43fa84ef1e21471661653878
> > Author: David Brownell <[email protected]>
> > Date: Wed Jul 23 21:30:33 2008 -0700
> >
> > rtc: remove BKL for ioctl()
>
> I'm sure I saw someone else's fixup patch for that a couple weeks ago.
> (Looks). Yes:
>
> http://groups.google.com/group/rtc-linux/browse_thread/thread/ad65b883739f8c92#

argh, so a fix for a serious regression has been languishing in the
backwaters of the rtc list for two weeks.

Guys, please: regressions are serious, top-priority emergencies. We
drop everything and run around with our hair on fire when we hear about
one (don't we?). Please, if you have a report of a regression or a fix
for one, Cc: everyone in the world on it.

I'd prefer not to go fishing through HTML to piece that patch together,
but as my hair is on fire I guess I'd better do so.

2008-08-20 13:28:10

by Atsushi Nemoto

[permalink] [raw]
Subject: Re: [BUG] rtc uie emulation deadlocks

On Tue, 19 Aug 2008 13:15:46 -0700, Andrew Morton <[email protected]> wrote:
> > I'm sure I saw someone else's fixup patch for that a couple weeks ago.
> > (Looks). Yes:
> >
> > http://groups.google.com/group/rtc-linux/browse_thread/thread/ad65b883739f8c92#
>
> argh, so a fix for a serious regression has been languishing in the
> backwaters of the rtc list for two weeks.
>
> Guys, please: regressions are serious, top-priority emergencies. We
> drop everything and run around with our hair on fire when we hear about
> one (don't we?). Please, if you have a report of a regression or a fix
> for one, Cc: everyone in the world on it.

Oh, I had thought I CC-ed it to LKML but actually I didn't. Thank you
for catching it up anyway.

---
Atsushi Nemoto