• David Brownell's avatar
    rtc: remove BKL for ioctl() · 5ad31a57
    David Brownell authored
    Remove implicit use of BKL in ioctl() from the RTC framework.
    
    Instead, the rtc->ops_lock is used.  That's the same lock that already
    protects the RTC operations when they're issued through the exported
    rtc_*() calls in drivers/rtc/interface.c ...  making this a bugfix, not
    just a cleanup, since both ioctl calls and set_alarm() need to update IRQ
    enable flags and that implies a common lock (which RTC drivers as a rule
    do not provide on their own).
    
    A new comment at the declaration of "struct rtc_class_ops" summarizes
    current locking rules.  It's not clear to me that the exceptions listed
    there should exist ...  if not, those are pre-existing problems which can
    be fixed in a patch that doesn't relate to BKL removal.
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Acked-by: default avatarAlessandro Zummo <a.zummo@towertech.it>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5ad31a57
rtc-dev.c 11.4 KB