projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
ed6f76b
)
KVM: s390/cpacf: Fix kernel bug under z/VM
author
Christian Borntraeger
<
[email protected]
>
Thu, 26 Feb 2015 12:53:47 +0000
(13:53 +0100)
committer
Christian Borntraeger
<
[email protected]
>
Wed, 4 Mar 2015 09:29:55 +0000
(10:29 +0100)
Under z/VM PQAP might trigger an operation exception if no crypto cards
are defined via APVIRTUAL or APDEDICATED.
[ 386.098666] Kernel BUG at
0000000000135c56
[verbose debug info unavailable]
[ 386.098693] illegal operation: 0001 ilc:2 [#1] SMP
[...]
[ 386.098751] Krnl PSW :
0704c00180000000
0000000000135c56
(kvm_s390_apxa_installed+0x46/0x98)
[...]
[ 386.098804] [<
000000000013627c
>] kvm_arch_init_vm+0x29c/0x358
[ 386.098806] [<
000000000012d008
>] kvm_dev_ioctl+0xc0/0x460
[ 386.098809] [<
00000000002c639a
>] do_vfs_ioctl+0x332/0x508
[ 386.098811] [<
00000000002c660e
>] SyS_ioctl+0x9e/0xb0
[ 386.098814] [<
000000000070476a
>] system_call+0xd6/0x258
[ 386.098815] [<
000003fffc7400a2
>] 0x3fffc7400a2
Lets add an extable entry and provide a zeroed config in that case.
Reported-by: Stefan Zimmermann <
[email protected]
>
Signed-off-by: Christian Borntraeger <
[email protected]
>
Reviewed-by: Thomas Huth <
[email protected]
>
Tested-by: Stefan Zimmermann <
[email protected]
>
arch/s390/kvm/kvm-s390.c
patch
|
blob
|
history
diff --git
a/arch/s390/kvm/kvm-s390.c
b/arch/s390/kvm/kvm-s390.c
index b4d2030c22eb6ec93a2b238b69dfad451d465377..18965f91d39e24e201d7308c119fd6eb78a657b1 100644
(file)
--- a/
arch/s390/kvm/kvm-s390.c
+++ b/
arch/s390/kvm/kvm-s390.c
@@
-778,15
+778,18
@@
long kvm_arch_vm_ioctl(struct file *filp,
static int kvm_s390_query_ap_config(u8 *config)
{
u32 fcn_code = 0x04000000UL;
- u32 cc;
+ u32 cc
= 0
;
+ memset(config, 0, 128);
asm volatile(
"lgr 0,%1\n"
"lgr 2,%2\n"
".long 0xb2af0000\n" /* PQAP(QCI) */
- "ipm %0\n"
+ "
0:
ipm %0\n"
"srl %0,28\n"
- : "=r" (cc)
+ "1:\n"
+ EX_TABLE(0b, 1b)
+ : "+r" (cc)
: "r" (fcn_code), "r" (config)
: "cc", "0", "2", "memory"
);