Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9da4d22 authored by Brian Norris's avatar Brian Norris Committed by Kalle Valo
Browse files

mwifiex: avoid double-disable_irq() race



We have a race where the wakeup IRQ might be in flight while we're
calling mwifiex_disable_wake() from resume(). This can leave us
disabling the IRQ twice.

Let's disable the IRQ and enable it in case if we have double-disabled
it.

Signed-off-by: default avatarBrian Norris <briannorris@chromium.org>
Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent d96e3927
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -1424,8 +1424,13 @@ static inline void mwifiex_disable_wake(struct mwifiex_adapter *adapter)
{
	if (adapter->irq_wakeup >= 0) {
		disable_irq_wake(adapter->irq_wakeup);
		if (!adapter->wake_by_wifi)
		disable_irq(adapter->irq_wakeup);
		if (adapter->wake_by_wifi)
			/* Undo our disable, since interrupt handler already
			 * did this.
			 */
			enable_irq(adapter->irq_wakeup);

	}
}