powerpc/pmac: Don't add_timer() twice
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 18 Apr 2012 22:16:48 +0000 (22:16 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 23 Apr 2012 01:04:28 +0000 (11:04 +1000)
commit3027691e58bfb21f6ea2e9f1d225d11b4e2b20e2
tree4ff705ce7b3b9b51563777b584d90cf4d0b1a348
parent2ef822c55371b20548d4f58193c580407a5d738d
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