linux-user: fix segfault deadlock
authorAlexander Graf <agraf@suse.de>
Fri, 13 Jan 2012 16:05:41 +0000 (17:05 +0100)
committerChanho Park <parkch98@gmail.com>
Tue, 9 Sep 2014 02:32:50 +0000 (11:32 +0900)
commit1e4c2483e8807cef718ed5100ac8bf2c18c86b7c
treec0b38be612b138ff64e55e90c7dbd62ccde1a321
parentde263b39a17c8dee85e1f985a92a282e0a665f38
linux-user: fix segfault deadlock

When entering the guest we take a lock to ensure that nobody else messes
with our TB chaining while we're doing it. If we get a segfault inside that
code, we manage to work on, but will not unlock the lock.

This patch forces unlocking of that lock in the segv handler. I'm not sure
this is the right approach though. Maybe we should rather make sure we don't
segfault in the code? I would greatly appreciate someone more intelligible
than me to look at this :).

Example code to trigger this is at: http://csgraf.de/tmp/conftest.c

Reported-by: Fabio Erculiani <lxnay@sabayon.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Andreas Färber <afaerber@suse.de>
include/exec/spinlock.h
user-exec.c