target/ppc: Check mask when setting cap_ppc_safe_indirect_branch
authorSuraj Jitindar Singh <sjitindarsingh@gmail.com>
Thu, 1 Mar 2018 06:37:58 +0000 (17:37 +1100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Tue, 6 Mar 2018 02:16:29 +0000 (13:16 +1100)
Check the character and character_mask field when setting
cap_ppc_safe_indirect_branch based on the hypervisor response
to KVM_PPC_GET_CPU_CHAR. Previously the mask field wasn't checked
which was incorrect.

Fixes: 8acc2ae5 (target/ppc/kvm: Add cap_ppc_safe_[cache/bounds_check/indirect_branch])
Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
target/ppc/kvm.c

index 9842b3bb124e7f03443a0817fe2885f9a2a16f33..2c183f61e2750394cfddd636ccf9d19546ce5462 100644 (file)
@@ -2494,7 +2494,7 @@ static void kvmppc_get_cpu_characteristics(KVMState *s)
         cap_ppc_safe_bounds_check = 1;
     }
     /* Parse and set cap_ppc_safe_indirect_branch */
-    if (c.character & H_CPU_CHAR_BCCTRL_SERIALISED) {
+    if (c.character & c.character_mask & H_CPU_CHAR_BCCTRL_SERIALISED) {
         cap_ppc_safe_indirect_branch = 2;
     }
 }