KVM: rseq: Update rseq when processing NOTIFY_RESUME on xfer to KVM guest
[linux-2.6-microblaze.git] / kernel / rseq.c
index 35f7bd0..6d45ac3 100644 (file)
@@ -282,9 +282,17 @@ void __rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs)
 
        if (unlikely(t->flags & PF_EXITING))
                return;
-       ret = rseq_ip_fixup(regs);
-       if (unlikely(ret < 0))
-               goto error;
+
+       /*
+        * regs is NULL if and only if the caller is in a syscall path.  Skip
+        * fixup and leave rseq_cs as is so that rseq_sycall() will detect and
+        * kill a misbehaving userspace on debug kernels.
+        */
+       if (regs) {
+               ret = rseq_ip_fixup(regs);
+               if (unlikely(ret < 0))
+                       goto error;
+       }
        if (unlikely(rseq_update_cpu_id(t)))
                goto error;
        return;