• Benjamin Herrenschmidt's avatar
    powerpc/pmac: Don't add_timer() twice · 3027691e
    Benjamin Herrenschmidt authored
    If the interrupt and the timeout happen roughly at the same
    time, we can get into a situation where the timer function
    is run while the interrupt has already been processed. In
    this case, the timer function might end up doing an add_timer
    on an already pending timer, causing a BUG_ON() to trigger.
    
    Instead, just skip the whole timeout operation if we see that
    the timer is pending. The spinlock ensures that the only way
    that happens is if we already started a new operation and thus
    the timeout can be ignored.
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    3027691e
low_i2c.c 36.4 KB