QEMU With E2K User Support
Go to file
James Hogan 3a3567d337 qemu-char: fix infinite recursion connecting to monitor pty
Since commit bd5c51e (qemu-char: don't issue CHR_EVENT_OPEN in a BH), an
infinite recursion occurs when putting the monitor on a pty (-monitor
pty) and connecting a terminal to the slave port.

This is because of the qemu_chr_be_event(s, CHR_EVENT_OPENED) added to
qemu_chr_be_generic_open(). This event is captured by monitor_event()
which prints a welcome message to the character device. The flush of
that welcome message retriggers another open event in pty_chr_state()
because it checks s->connected, but only sets it to 1 after calling
qemu_chr_be_generic_open().

I've fixed this by setting s->connected = 1 before the call to
qemu_chr_be_generic_open() instead of after, so that the recursive
pty_chr_state() doesn't call it again.

An example snippet of repeating backtrace:
 ...
 #107486 0x007aec58 in monitor_flush (mon=0xf418b0) at qemu/monitor.c:288
 #107487 0x007aee7c in monitor_puts (mon=0xf418b0, str=0x1176d07 "") at qemu/monitor.c:322
 #107488 0x007aef20 in monitor_vprintf (mon=0xf418b0, fmt=0x8d4820 "QEMU %s monitor - type 'help' for more information\n",
     ap=0x7f432be0) at qemu/monitor.c:339
 #107489 0x007aefac in monitor_printf (mon=0xf418b0, fmt=0x8d4820 "QEMU %s monitor - type 'help' for more information\n")
     at qemu/monitor.c:347
 #107490 0x007ba4bc in monitor_event (opaque=0xf418b0, event=2) at qemu/monitor.c:4699
 #107491 0x00684c28 in qemu_chr_be_event (s=0xf37788, event=2) at qemu/qemu-char.c:108
 #107492 0x00684c70 in qemu_chr_be_generic_open (s=0xf37788) at qemu/qemu-char.c:113
 #107493 0x006880a4 in pty_chr_state (chr=0xf37788, connected=1) at qemu/qemu-char.c:1145
 #107494 0x00687fa4 in pty_chr_update_read_handler (chr=0xf37788) at qemu/qemu-char.c:1121
 #107495 0x00687c9c in pty_chr_write (chr=0xf37788, buf=0x70b3c008 <Address 0x70b3c008 out of bounds>, len=538720)
     at qemu/qemu-char.c:1063
 #107496 0x00684cc4 in qemu_chr_fe_write (s=0xf37788, buf=0x70b3c008 <Address 0x70b3c008 out of bounds>, len=538720)
     at qemu/qemu-char.c:118
 ...

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Tested-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Message-id: 1375960178-10882-1-git-send-email-james.hogan@imgtec.com
Cc: Michael Roth <mdroth@linux.vnet.ibm.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2013-08-13 13:24:50 -05:00
audio audio: Replace static functions in header file by macros, remove GCC_ATTR 2013-06-21 22:52:50 +04:00
backends rng-random: use error_setg_file_open() 2013-06-17 11:01:14 -04:00
block raw: add license header 2013-08-12 09:15:11 -05:00
bsd-user gdbstub: Change gdb_handlesig() argument to CPUState 2013-07-23 02:41:33 +02:00
default-configs pc_sysfw: do not make it a device anymore 2013-08-12 09:31:14 -05:00
disas
docs misc: Fix new typos in comments and strings 2013-07-27 11:22:54 +04:00
dtc@bc895d6d09
fpu softfloat: Fix shift128Right for shift counts 64..127 2013-06-10 11:36:12 -05:00
fsdev fsdev: Fix potential memory leak 2013-07-09 13:38:56 -05:00
gdb-xml
hw pvpanic: fix bad merge 2013-08-13 09:02:52 -05:00
include pc_sysfw: do not make it a device anymore 2013-08-12 09:31:14 -05:00
libcacard libcacard: Fix cppcheck warning and remove unneeded code 2013-06-21 22:52:50 +04:00
linux-headers linux-headers: Update to v3.10-rc5 2013-06-12 13:19:10 +04:00
linux-user linux-user: Return success from m68k set_thread_area syscall 2013-07-29 19:56:52 -05:00
net misc: Use g_assert_not_reached for code which is expected to be unreachable 2013-07-27 11:22:54 +04:00
pc-bios Update OpenBIOS images 2013-07-30 23:11:07 +01:00
pixman@97336fad32
po po: Update all *.po files 2013-08-07 12:48:00 -05:00
qapi qapi: make visit_type_size fallback to type_int 2013-07-29 19:33:33 -05:00
qga qga: escape cmdline args when registering win32 service (CVE-2013-2231) 2013-07-25 14:49:04 -05:00
QMP net: add support of mac-programming over macvtap in QEMU side 2013-07-15 21:23:08 +03:00
qobject Implement qdict_flatten() 2013-07-26 22:01:31 +02:00
qom cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" 2013-07-29 15:29:15 +02:00
roms Update OpenBIOS images 2013-07-30 23:11:07 +01:00
scripts qapi.py: Permit comments starting anywhere on the line 2013-07-29 10:37:11 -05:00
slirp slirp: remove mbuf(m_hdr,m_dat) indirection 2013-07-19 12:52:03 +04:00
stubs dump: rebase from host-private RAMBlock offsets to guest-physical addresses 2013-08-08 11:01:46 -04:00
sysconfigs/target
target-alpha cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" 2013-07-29 15:29:15 +02:00
target-arm cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" 2013-07-29 15:29:15 +02:00
target-cris cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" 2013-07-29 15:29:15 +02:00
target-i386 dump: rebase from host-private RAMBlock offsets to guest-physical addresses 2013-08-08 11:01:46 -04:00
target-lm32 lm32_juart: Relocate and tidy header 2013-07-29 21:06:27 +02:00
target-m68k cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" 2013-07-29 15:29:15 +02:00
target-microblaze cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" 2013-07-29 15:29:15 +02:00
target-mips target-mips: fix decoding of microMIPS POOL32Axf instructions 2013-08-06 13:09:14 +02:00
target-moxie cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" 2013-07-29 15:29:15 +02:00
target-openrisc cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" 2013-07-29 15:29:15 +02:00
target-ppc target-ppc: Add POWER5+ v2.1 CPU model 2013-08-07 12:47:44 -05:00
target-s390x dump: rebase from host-private RAMBlock offsets to guest-physical addresses 2013-08-08 11:01:46 -04:00
target-sh4 cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" 2013-07-29 15:29:15 +02:00
target-sparc cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" 2013-07-29 15:29:15 +02:00
target-unicore32 cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" 2013-07-29 15:29:15 +02:00
target-xtensa xtensa queue 2013-07-29 2013-08-05 08:06:25 -05:00
tcg tcg/mips: fix invalid op definition errors 2013-08-08 23:06:02 +02:00
tests vmdk: check l1 size before opening image 2013-08-06 15:27:32 +02:00
trace trace: Add ftrace tracing backend 2013-05-03 13:58:09 +02:00
ui spice: fix display initialization 2013-07-30 10:25:47 +02:00
util qemu-option: Guard against qemu_opts_set_defaults() misuse 2013-08-12 09:15:37 -05:00
.exrc
.gitignore gitignore: unignore *.patch 2013-06-11 23:45:43 +04:00
.gitmodules pc-bios: Update palcode-clipper 2013-07-18 08:17:42 -07:00
.mailmap
aio-posix.c
aio-win32.c
arch_init.c rdma: send pc.ram 2013-07-23 11:12:00 +02:00
async.c QEMUBH: make AioContext's bh re-entrant 2013-07-19 12:29:21 +08:00
balloon.c
block-migration.c block-migration: efficiently encode zero blocks 2013-07-19 12:29:21 +08:00
block.c block: Repair the throttling code. 2013-07-29 17:07:37 +02:00
blockdev-nbd.c hw: move headers to include/ 2013-04-08 18:13:10 +02:00
blockdev.c block: Bugfix 'format' and 'snapshot' used in drive option 2013-08-09 19:33:23 +02:00
blockjob.c
bt-host.c
bt-vhci.c
Changelog
CODING_STYLE
configure xtensa queue 2013-07-29 2013-08-05 08:06:25 -05:00
COPYING
COPYING.LIB
coroutine-gthread.c
coroutine-sigaltstack.c
coroutine-ucontext.c
coroutine-win32.c
cpu-exec.c cpu: Move singlestep_enabled field from CPU_COMMON to CPUState 2013-07-23 02:41:32 +02:00
cpus.c timer: make timers_state static 2013-07-27 11:22:53 +04:00
cputlb.c cpu: Make first_cpu and next_cpu CPUState 2013-07-09 21:32:54 +02:00
device_tree.c device_tree: Add qemu_devtree_setprop_sized_cells() utility functions 2013-07-19 12:58:46 +01:00
device-hotplug.c
disas.c exec: Change cpu_memory_rw_debug() argument to CPUState 2013-07-23 02:41:33 +02:00
dma-helpers.c dma: keep a device alive while it has SGLists 2013-07-04 17:42:30 +02:00
dump.c dump: rebase from host-private RAMBlock offsets to guest-physical addresses 2013-08-08 11:01:46 -04:00
exec.c cpu: Fix VMSTATE_CPU() semantics 2013-07-31 21:03:59 +02:00
gdbstub.c cpu: Introduce CPUClass::gdb_core_xml_file for GDB_CORE_XML 2013-07-27 00:04:17 +02:00
HACKING HACKING: Document vaddr type usage 2013-07-23 02:41:31 +02:00
hmp-commands.hx block: add drive_backup HMP command 2013-07-15 09:49:00 +02:00
hmp.c rdma: account for the time spent in MIG_STATE_SETUP through QMP 2013-07-23 13:06:37 +02:00
hmp.h block: add drive_backup HMP command 2013-07-15 09:49:00 +02:00
iohandler.c
ioport.c Revert "ioport: remove LITTLE_ENDIAN mark for portio" 2013-07-25 08:12:27 -05:00
kvm-all.c kvm: Change prototype of kvm_update_guest_debug() 2013-07-26 23:05:31 +02:00
kvm-stub.c kvm: Change prototype of kvm_update_guest_debug() 2013-07-26 23:05:31 +02:00
LICENSE LICENSE: clarify 2013-08-12 09:15:12 -05:00
main-loop.c main-loop: do not include slirp/slirp.h, use libslirp.h instead 2013-06-12 18:43:08 +04:00
MAINTAINERS MAINTAINERS: change Igor Mitsyanko's email address 2013-07-31 13:28:46 -05:00
Makefile w32: Add missing version.o to all executables (fix regression) 2013-08-12 09:19:05 -05:00
Makefile.objs w32: Add missing version.o to all executables (fix regression) 2013-08-12 09:19:05 -05:00
Makefile.target build: do not use TARGET_ARCH 2013-06-14 15:33:10 +01:00
memory_mapping.c dump: rebase from host-private RAMBlock offsets to guest-physical addresses 2013-08-08 11:01:46 -04:00
memory.c memory.c: drop kvm.h dependency 2013-08-02 18:05:16 +04:00
migration-exec.c
migration-fd.c
migration-rdma.c rdma: IPv6 over Ethernet (RoCE) is broken in linux - workaround 2013-08-12 09:31:16 -05:00
migration-tcp.c
migration-unix.c
migration.c migration: don't use uninitialized variables 2013-08-01 09:40:46 -04:00
monitor.c exec: Change cpu_memory_rw_debug() argument to CPUState 2013-07-23 02:41:33 +02:00
nbd.c nbd: support large NBD requests 2013-05-03 13:05:49 +02:00
os-posix.c
os-win32.c
page_cache.c remove some double-includes 2013-05-18 16:35:12 +04:00
qapi-schema.json qapi: Rename ChardevBackend member "memory" to "ringbuf" 2013-07-29 10:37:12 -05:00
qdev-monitor.c qemu-help: Sort devices by logical functionality 2013-07-29 10:37:09 -05:00
qdict-test-data.txt
qemu-bridge-helper.c
qemu-char.c qemu-char: fix infinite recursion connecting to monitor pty 2013-08-13 13:24:50 -05:00
qemu-coroutine-io.c rdma: export yield_until_fd_readable() 2013-06-27 02:38:36 +02:00
qemu-coroutine-lock.c block: Repair the throttling code. 2013-07-29 17:07:37 +02:00
qemu-coroutine-sleep.c
qemu-coroutine.c coroutine: stop using AioContext in CoQueue 2013-05-24 16:17:56 +02:00
qemu-doc.texi doc: we use seabios, not bochs bios 2013-06-28 22:10:34 +04:00
qemu-img-cmds.hx
qemu-img.c ignore SIGPIPE in qemu-img and qemu-io 2013-08-06 10:41:56 +02:00
qemu-img.texi
qemu-io-cmds.c qemu-io: Interface cleanup 2013-06-06 11:27:05 +02:00
qemu-io.c ignore SIGPIPE in qemu-img and qemu-io 2013-08-06 10:41:56 +02:00
qemu-log.c
qemu-nbd.c
qemu-nbd.texi
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx Revert "chardev: Make the name of memory device consistent" 2013-07-29 10:37:11 -05:00
qemu-seccomp.c seccomp: add arch_prctl() to the syscall whitelist 2013-07-29 19:56:52 -05:00
qemu-tech.texi
qemu-timer.c
qemu.nsi w32, w64: Add build rule for installer 2013-07-29 11:43:37 +02:00
qemu.sasl Fix command example in qemu.sasl 2013-07-19 12:52:03 +04:00
qmp-commands.hx rdma: remaining documentation fixes 2013-08-12 09:31:16 -05:00
qmp.c
qtest.c qtest: Don't reset on qtest chardev connect 2013-07-18 13:27:46 -05:00
readline.c readline: Handle xterm escape sequences for Home/End keys 2013-05-14 08:53:22 -05:00
README
rules.mak win32: fix compilation again 2013-05-03 12:04:40 -05:00
savevm.c rdma: bugfix: ram_control_save_page() 2013-07-23 11:11:59 +02:00
spice-qemu-char.c qemu-char: don't issue CHR_EVENT_OPEN in a BH 2013-06-10 11:38:37 -05:00
tcg-runtime.c
tci.c
thread-pool.c
thunk.c
tpm.c tpm.c: Don't try to put -1 in a variable of type TpmModel 2013-07-29 10:37:10 -05:00
trace-events memory: add tracepoints for MMIO reads/writes 2013-07-29 10:37:10 -05:00
translate-all.c linux-user: Unlock mmap_lock when resuming guest from page_unprotect 2013-07-23 17:28:28 +03:00
translate-all.h
user-exec.c linux-user: fix segmentation fault passing with h2g(x) != x 2013-07-23 17:28:28 +03:00
VERSION Update version for 1.6.0-rc3 2013-08-12 15:03:36 -05:00
version.rc
vl.c spice: fix display initialization 2013-07-30 10:25:47 +02:00
xbzrle.c
xen-all.c memory: add ref/unref calls 2013-07-04 17:42:45 +02:00
xen-mapcache.c
xen-stub.c Allow use of pc machine type (accel=xen) for Xen HVM domains. 2013-06-25 12:00:48 +00:00

Read the documentation in qemu-doc.html or on http://wiki.qemu.org

- QEMU team