]> git.baikalelectronics.ru Git - kernel.git/commit
spi: dw: Set transfer handler before unmasking the IRQs
authorBaikal Electronics <support@baikalelectronics.ru>
Tue, 17 Nov 2020 09:40:54 +0000 (12:40 +0300)
committerMark Brown <broonie@kernel.org>
Tue, 17 Nov 2020 17:08:39 +0000 (17:08 +0000)
commitce83cfe5eef4d46af1c73be1fb13130c7372094d
tree1820a56891a5bdd77b8b6eb8e82e09ae9fe1f6e8
parent5aad54b614d6654abafd4b0a3195ae34a14f4893
spi: dw: Set transfer handler before unmasking the IRQs

It turns out the IRQs most like can be unmasked before the controller is
enabled with no problematic consequences. The manual doesn't explicitly
state that, but the examples perform the controller initialization
procedure in that order. So the commit 157a0d90eb65 ("spi: dw: Unmask IRQs
after enabling the chip") hasn't been that required as I thought. But
anyway setting the IRQs up after the chip enabling still worth adding
since it has simplified the code a bit. The problem is that it has
introduced a potential bug. The transfer handler pointer is now
initialized after the IRQs are enabled. That may and eventually will cause
an invalid or uninitialized callback invocation. Fix that just by
performing the callback initialization before the IRQ unmask procedure.

Fixes: 157a0d90eb65 ("spi: dw: Unmask IRQs after enabling the chip")
Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Link: https://lore.kernel.org/r/20201117094054.4696-1-Sergey.Semin@baikalelectronics.ru
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-dw-core.c