WSL2-Linux-Kernel/arch/um/drivers
Johannes Berg 59f132fda5 um: virtio_uml: Fix broken device handling in time-travel
[ Upstream commit af9fb41ed3 ]

If a device implementation crashes, virtio_uml will mark it
as dead by calling virtio_break_device() and scheduling the
work that will remove it.

This still seems like the right thing to do, but it's done
directly while reading the message, and if time-travel is
used, this is in the time-travel handler, outside of the
normal Linux machinery. Therefore, we cannot acquire locks
or do normal "linux-y" things because e.g. lockdep will be
confused about the context.

Move handling this situation out of the read function and
into the actual IRQ handler and response handling instead,
so that in the case of time-travel we don't call it in the
wrong context.

Chances are the system will still crash immediately, since
the device implementation crashing may also cause the time-
travel controller to go down, but at least all of that now
happens without strange warnings from lockdep.

Fixes: c8177aba37 ("um: time-travel: rework interrupt handling in ext mode")
Cc: stable@vger.kernel.org
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>
2022-07-29 17:25:29 +02:00
..
Kconfig um: add PCI over virtio emulation driver 2021-06-17 21:45:43 +02:00
Makefile um: add PCI over virtio emulation driver 2021-06-17 21:45:43 +02:00
chan.h um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
chan_kern.c um: line: Use separate IRQs per line 2022-06-14 18:36:23 +02:00
chan_user.c um: chan_user: Fix winch_tramp() return value 2022-06-09 10:23:27 +02:00
chan_user.h um: Add an option to make serial driver non-raw 2020-01-19 22:41:50 +01:00
cow.h treewide: remove editor modelines and cruft 2021-05-07 00:26:34 -07:00
cow_sys.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cow_user.c um: ubd: use 64-bit time_t where possible 2019-12-18 18:07:31 +01:00
daemon.h um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
daemon_kern.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
daemon_user.c um: Some fixes to build UML with musl 2020-10-11 23:13:06 +02:00
fd.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
harddog_kern.c compat_ioctl: move WDIOC handling into wdt drivers 2019-10-23 17:23:46 +02:00
harddog_user.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
hostaudio_kern.c um: Remove unneeded variable 'ret' 2021-04-15 23:10:33 +02:00
line.c um: line: Use separate IRQs per line 2022-06-14 18:36:23 +02:00
line.h um: line: Use separate IRQs per line 2022-06-14 18:36:23 +02:00
mconsole.h um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
mconsole_kern.c um: Fix uml_mconsole stop/go 2022-04-08 14:24:16 +02:00
mconsole_kern.h um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
mconsole_user.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
mmapper_kern.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
net_kern.c um: Support dynamic IRQ allocation 2020-12-13 22:22:08 +01:00
net_user.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
null.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
pcap_kern.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
pcap_user.c um: Some fixes to build UML with musl 2020-10-11 23:13:06 +02:00
pcap_user.h um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
port.h um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
port_kern.c um: Support dynamic IRQ allocation 2020-12-13 22:22:08 +01:00
port_user.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
pty.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
random.c um: Remove IRQ_NONE type 2020-12-13 22:22:29 +01:00
rtc.h um: add a pseudo RTC 2021-02-12 21:38:52 +01:00
rtc_kern.c um: add a pseudo RTC 2021-02-12 21:38:52 +01:00
rtc_user.c isystem: trim/fixup stdarg.h and other headers 2021-08-19 09:02:55 +09:00
slip.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
slip_common.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
slip_common.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
slip_kern.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
slip_user.c um: fix error return code in slip_open() 2021-06-17 22:10:05 +02:00
slirp.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
slirp_kern.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
slirp_user.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
ssl.c um: line: Use separate IRQs per line 2022-06-14 18:36:23 +02:00
stderr_console.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
stdio_console.c um: line: Use separate IRQs per line 2022-06-14 18:36:23 +02:00
stdio_console.h um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
tty.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
ubd.h um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
ubd_kern.c block: drop unused includes in <linux/genhd.h> 2022-03-16 14:23:46 +01:00
ubd_user.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
umcast.h um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
umcast_kern.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
umcast_user.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
vde.h um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
vde_kern.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
vde_user.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
vector_kern.c um: vector: adjust to coalesce API changes 2021-08-27 07:05:53 -07:00
vector_kern.h um: virtio: Replace zero-length array with flexible-array 2020-06-02 22:38:00 +02:00
vector_transports.c um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
vector_user.c isystem: trim/fixup stdarg.h and other headers 2021-08-19 09:02:55 +09:00
vector_user.h um: Fix typo in vector driver transport option definition 2020-04-29 21:22:15 +02:00
vhost_user.h um: virtio: Replace zero-length array with flexible-array 2020-06-02 22:38:00 +02:00
virt-pci.c um: virt-pci: Fix 32-bit compile 2022-01-27 11:03:44 +01:00
virtio_uml.c um: virtio_uml: Fix broken device handling in time-travel 2022-07-29 17:25:29 +02:00
xterm.c um: chan_xterm: Fix fd leak 2020-12-13 22:38:28 +01:00
xterm.h um: Add SPDX headers for files in arch/um/drivers 2019-09-15 21:37:16 +02:00
xterm_kern.c um: Support dynamic IRQ allocation 2020-12-13 22:22:08 +01:00