powerpc/pmac: Don't add_timer() twice
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 18 Apr 2012 22:16:48 +0000 (22:16 +0000)
committerVarun Wadekar <vwadekar@nvidia.com>
Mon, 30 Apr 2012 12:26:53 +0000 (17:26 +0530)
commit8733771d1e0a349e19c29b9c9355e0e6bce05b1c
tree1e864d2f29676e253eec81133cb1b8172888d144
parente6d4a8f285cb85e649b2e1d2c8c99ec364e1a7e1
powerpc/pmac: Don't add_timer() twice

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: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/powermac/low_i2c.c