• Thomas Gleixner's avatar
    misc/sgi-xp: Replace in_interrupt() usage · 997754f1
    Thomas Gleixner authored
    The usage of in_interrupt() in xpc_partition_disengaged() is clearly
    intended to avoid canceling the timeout timer when the function is invoked
    from the timer callback.
    
    While in_interrupt() is deprecated and ill defined as it does not provide
    what the name suggests it catches the intended case.
    
    Add an argument to xpc_partition_disengaged() which is true if called
    from timer and otherwise false.
    Use del_timer_sync() instead of del_singleshot_timer_sync() which is the
    same thing.
    
    Note: This does not prevent reentrancy into the function as the function
    has no concurrency control and timer callback and regular task context
    callers can happen concurrently on different CPUs or the timer can
    interrupt the task context before it is able to cancel it.
    
    While the only driver which is providing the arch_xpc_ops callbacks
    (xpc_uv) seems not to have a reentrancy problem and the only negative
    effect would be a double dev_info() entry in dmesg, the whole mechanism is
    conceptually broken.
    
    But that's not subject of this cleanup endeavour and left as an exercise to
    the folks who might have interest to make that code fully correct.
    
    [bigeasy: Add the argument, use del_timer_sync().]
    
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Cliff Whickman <cpw@sgi.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Robin Holt <robinmholt@gmail.com>
    Cc: Steve Wahl <steve.wahl@hpe.com>
    Cc: Dimitri Sivanich <dimitri.sivanich@hpe.com>
    Cc: Russ Anderson <russ.anderson@hpe.com>
    Reviewed-by: default avatarSteve Wahl <steve.wahl@hpe.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: https://lore.kernel.org/r/20201119103151.ppo45mj53ulbxjx4@linutronix.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    997754f1
xpc_partition.c 13.8 KB