• Vladimir Zapolskiy's avatar
    rtc: s3c: balance state changes of wakeup flag · f501ed52
    Vladimir Zapolskiy authored
    This change resolves a problem about unbalanced calls of
    enable_irq_wakeup() and disable_irq_wakeup() for alarm interrupt.
    
    Bug reproduction:
    
    root@eb600:~# echo 0 > /sys/class/rtc/rtc0/wakealarm
    
    WARNING: at kernel/irq/manage.c:361 set_irq_wake+0x7c/0xe4()
     Unbalanced IRQ 46 wake disable
    Modules linked in:
    [<c0025708>] (unwind_backtrace+0x0/0xd8) from [<c003358c>] (warn_slowpath_common+0x44/0x5c)
    [<c003358c>] (warn_slowpath_common+0x44/0x5c) from [<c00335dc>] (warn_slowpath_fmt+0x24/0x30)
    [<c00335dc>] (warn_slowpath_fmt+0x24/0x30) from [<c0058c20>] (set_irq_wake+0x7c/0xe4)
    [<c0058c20>] (set_irq_wake+0x7c/0xe4) from [<c01b5e80>] (s3c_rtc_setalarm+0xa8/0xb8)
    [<c01b5e80>] (s3c_rtc_setalarm+0xa8/0xb8) from [<c01b47a0>] (rtc_set_alarm+0x60/0x74)
    [<c01b47a0>] (rtc_set_alarm+0x60/0x74) from [<c01b5a98>] (rtc_sysfs_set_wakealarm+0xc8/0xd8)
    [<c01b5a98>] (rtc_sysfs_set_wakealarm+0xc8/0xd8) from [<c01891ec>] (dev_attr_store+0x20/0x24)
    [<c01891ec>] (dev_attr_store+0x20/0x24) from [<c00be934>] (sysfs_write_file+0x104/0x13c)
    [<c00be934>] (sysfs_write_file+0x104/0x13c) from [<c0080e7c>] (vfs_write+0xb0/0x158)
    [<c0080e7c>] (vfs_write+0xb0/0x158) from [<c0080fcc>] (sys_write+0x3c/0x68)
    [<c0080fcc>] (sys_write+0x3c/0x68) from [<c0020ec0>] (ret_fast_syscall+0x0/0x28)
    Signed-off-by: default avatarVladimir Zapolskiy <vzapolskiy@gmail.com>
    Cc: Alessandro Zummo <a.zummo@towertech.it>
    Cc: Ben Dooks <ben@fluff.org.uk>
    Cc: Atul Dahiya <atul.dahiya@samsung.com>
    Cc: Taekgyun Ko <taeggyun.ko@samsung.com>
    Cc: Kukjin Kim <kgene.kim@samsung.com>
    Cc: <stable@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f501ed52
rtc-s3c.c 15.3 KB