um: Fix IRQ controller regression on console read
authorJouni Malinen <j@w1.fi>
Mon, 6 May 2019 12:39:35 +0000 (14:39 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jan 2020 13:50:59 +0000 (14:50 +0100)
commitd329e071ed6c34079aa9122d2845de235ed3ffdd
tree93b50d89b72f4206ce6c06b0676f8380213245d6
parente793ac763ca225efa674d81215057501c88af347
um: Fix IRQ controller regression on console read

[ Upstream commit bebe4681d0e7e1be2608282dc86645728bc7f623 ]

The conversion of UML to use epoll based IRQ controller claimed that
clone_one_chan() can safely call um_free_irq() while starting to ignore
the delay_free_irq parameter that explicitly noted that the IRQ cannot
be freed because this is being called from chan_interrupt(). This
resulted in free_irq() getting called in interrupt context ("Trying to
free IRQ 6 from IRQ context!").

Fix this by restoring previously used delay_free_irq processing.

Fixes: ff6a17989c08 ("Epoll based IRQ controller")
Signed-off-by: Jouni Malinen <j@w1.fi>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/um/drivers/chan_kern.c
arch/um/kernel/irq.c