diff options
author | Christian Borntraeger <borntraeger@de.ibm.com> | 2011-06-06 12:14:38 (GMT) |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-06-06 12:14:56 (GMT) |
commit | a578b37cc2e719447810343089a7cb93efc3812f (patch) | |
tree | 2aec852e2d10c710c79d5a6b50b680d05aeff460 /arch/s390/kvm | |
parent | 59c5f46fbe01a00eedf54a23789634438bb80603 (diff) | |
download | linux-a578b37cc2e719447810343089a7cb93efc3812f.tar.xz |
[S390] kvm-s390: Fix host crash on misbehaving guests
commit 9ff4cfb3fcfd48b49fdd9be7381b3be340853aa4 ([S390] kvm-390: Let
kernel exit SIE instruction on work) fixed a problem of commit
commit cd3b70f5d4d82f85d1e1d6e822f38ae098cf7c72 ([S390] virtualization
aware cpu measurement) but uncovered another one.
If a kvm guest accesses guest real memory that doesnt exist, the
page fault handler calls the sie hook, which then rewrites
the return psw from sie_inst to either sie_exit or sie_reenter.
On return, the page fault handler will then detect the wrong access
as a kernel fault causing a kernel oops in sie_reenter or sie_exit.
We have to add these two addresses to the exception table to allow
graceful exits.
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kvm')
-rw-r--r-- | arch/s390/kvm/sie64a.S | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/s390/kvm/sie64a.S b/arch/s390/kvm/sie64a.S index ab0e041..5faa1b1 100644 --- a/arch/s390/kvm/sie64a.S +++ b/arch/s390/kvm/sie64a.S @@ -93,4 +93,6 @@ sie_err: .section __ex_table,"a" .quad sie_inst,sie_err + .quad sie_exit,sie_err + .quad sie_reenter,sie_err .previous |