• Arnd Bergmann's avatar
    compat_ioctl: move rtc handling into drivers/rtc/dev.c · 076ff658
    Arnd Bergmann authored
    We no longer need the rtc compat handling to be in common code, now that
    all drivers are either moved to the rtc-class framework, or (rarely)
    exist in drivers/char for architectures without compat mode (m68k,
    alpha and ia64, respectively).
    
    I checked the list of ioctl commands in drivers, and the ones that are
    not already handled are all compatible, again with the one exception of
    m68k driver, which implements RTC_PLL_GET and RTC_PLL_SET, but has no
    compat mode.
    
    Unlike earlier versions of this patch, I'm now adding a separate
    compat_ioctl handler that takes care of RTC_IRQP_READ32/RTC_IRQP_SET32
    and treats all other commands as compatible, leaving the native
    behavior unchanged.
    
    The old conversion handler also deals with RTC_EPOCH_READ and
    RTC_EPOCH_SET, which are not handled in rtc-dev.c but only in a single
    device driver (rtc-vr41xx), so I'm adding the compat version in the same
    place. I don't expect other drivers to need those commands in the future.
    Acked-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
    Reviewed-by: default avatarBen Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    ---
    v4: handle RTC_EPOCH_SET32 in rtc_dev_compat_ioctl
    v3: handle RTC_IRQP_READ32/RTC_IRQP_SET32 in rtc_dev_compat_ioctl
    v2: merge compat handler into ioctl function to avoid the
        compat_alloc_user_space() roundtrip, based on feedback
        from Al Viro.
    076ff658
compat_ioctl.c 28.4 KB