From: Sanjay Lal <sanj...@kymasys.com>

MIPS/Linux is unusual in having 128 signals rather than just 64 like
most other architectures. This means its sigmask is 16 bytes instead of
8, so correct kvm_set_signal_mask to pass the correct sigmask->len to
KVM_SET_SIGNAL_MASK.

Signed-off-by: Sanjay Lal <sanj...@kymasys.com>
Signed-off-by: James Hogan <james.ho...@imgtec.com>
Cc: Gleb Natapov <g...@redhat.com>
Cc: Paolo Bonzini <pbonz...@redhat.com>
---
Changes in v2:
 - Expand commit message
 - Reword comment
---
 kvm-all.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/kvm-all.c b/kvm-all.c
index 4478969..c831326 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -2044,7 +2044,12 @@ int kvm_set_signal_mask(CPUState *cpu, const sigset_t 
*sigset)
 
     sigmask = g_malloc(sizeof(*sigmask) + sizeof(*sigset));
 
+#ifdef TARGET_MIPS
+    /* MIPS has 128 signals */
+    sigmask->len = 16;
+#else
     sigmask->len = 8;
+#endif
     memcpy(sigmask->sigset, sigset, sizeof(*sigset));
     r = kvm_vcpu_ioctl(cpu, KVM_SET_SIGNAL_MASK, sigmask);
     g_free(sigmask);
-- 
1.8.1.2



Reply via email to