[BUG] rtc uie emulation deadlocks

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <a.zummo@...>, Linux Kernel List <linux-kernel@...>
Date: Monday, August 11, 2008 - 9:43 am

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:
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[BUG] rtc uie emulation deadlocks, Russell King, (Mon Aug 11, 9:43 am)
Re: [BUG] rtc uie emulation deadlocks, Andrew Morton, (Tue Aug 19, 3:53 am)
Re: [BUG] rtc uie emulation deadlocks, David Brownell, (Tue Aug 19, 1:12 pm)
Re: [BUG] rtc uie emulation deadlocks, Andrew Morton, (Tue Aug 19, 4:15 pm)
Re: [BUG] rtc uie emulation deadlocks, Atsushi Nemoto, (Wed Aug 20, 9:27 am)