All of lore.kernel.org
 help / color / mirror / Atom feed
* FAILED: patch "[PATCH] KVM: rseq: Update rseq when processing NOTIFY_RESUME on xfer" failed to apply to 5.10-stable tree
@ 2021-09-26 12:44 gregkh
  2021-09-27 19:31 ` Sean Christopherson
  0 siblings, 1 reply; 4+ messages in thread
From: gregkh @ 2021-09-26 12:44 UTC (permalink / raw)
  To: seanjc, dje, mathieu.desnoyers, pbonzini, pefoley, shakeelb, tglx; +Cc: stable


The patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From 8646e53633f314e4d746a988240d3b951a92f94a Mon Sep 17 00:00:00 2001
From: Sean Christopherson <seanjc@google.com>
Date: Wed, 1 Sep 2021 13:30:26 -0700
Subject: [PATCH] KVM: rseq: Update rseq when processing NOTIFY_RESUME on xfer
 to KVM guest

Invoke rseq's NOTIFY_RESUME handler when processing the flag prior to
transferring to a KVM guest, which is roughly equivalent to an exit to
userspace and processes many of the same pending actions.  While the task
cannot be in an rseq critical section as the KVM path is reachable only
by via ioctl(KVM_RUN), the side effects that apply to rseq outside of a
critical section still apply, e.g. the current CPU needs to be updated if
the task is migrated.

Clearing TIF_NOTIFY_RESUME without informing rseq can lead to segfaults
and other badness in userspace VMMs that use rseq in combination with KVM,
e.g. due to the CPU ID being stale after task migration.

Fixes: 72c3c0fe54a3 ("x86/kvm: Use generic xfer to guest work function")
Reported-by: Peter Foley <pefoley@google.com>
Bisected-by: Doug Evans <dje@google.com>
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20210901203030.1292304-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

diff --git a/kernel/entry/kvm.c b/kernel/entry/kvm.c
index 49972ee99aff..049fd06b4c3d 100644
--- a/kernel/entry/kvm.c
+++ b/kernel/entry/kvm.c
@@ -19,8 +19,10 @@ static int xfer_to_guest_mode_work(struct kvm_vcpu *vcpu, unsigned long ti_work)
 		if (ti_work & _TIF_NEED_RESCHED)
 			schedule();
 
-		if (ti_work & _TIF_NOTIFY_RESUME)
+		if (ti_work & _TIF_NOTIFY_RESUME) {
 			tracehook_notify_resume(NULL);
+			rseq_handle_notify_resume(NULL, NULL);
+		}
 
 		ret = arch_xfer_to_guest_mode_handle_work(vcpu, ti_work);
 		if (ret)
diff --git a/kernel/rseq.c b/kernel/rseq.c
index 35f7bd0fced0..6d45ac3dae7f 100644
--- a/kernel/rseq.c
+++ b/kernel/rseq.c
@@ -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;


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: FAILED: patch "[PATCH] KVM: rseq: Update rseq when processing NOTIFY_RESUME on xfer" failed to apply to 5.10-stable tree
  2021-09-26 12:44 FAILED: patch "[PATCH] KVM: rseq: Update rseq when processing NOTIFY_RESUME on xfer" failed to apply to 5.10-stable tree gregkh
@ 2021-09-27 19:31 ` Sean Christopherson
  2021-10-03 14:15   ` Greg KH
  0 siblings, 1 reply; 4+ messages in thread
From: Sean Christopherson @ 2021-09-27 19:31 UTC (permalink / raw)
  To: gregkh; +Cc: dje, mathieu.desnoyers, pbonzini, pefoley, shakeelb, tglx, stable

On Sun, Sep 26, 2021, gregkh@linuxfoundation.org wrote:
> 
> The patch below does not apply to the 5.10-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@vger.kernel.org>.

5.10 backport sent: https://lkml.kernel.org/r/20210927192846.1533905-1-seanjc@google.comb

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: FAILED: patch "[PATCH] KVM: rseq: Update rseq when processing NOTIFY_RESUME on xfer" failed to apply to 5.10-stable tree
  2021-09-27 19:31 ` Sean Christopherson
@ 2021-10-03 14:15   ` Greg KH
  2021-10-04 15:12     ` Sean Christopherson
  0 siblings, 1 reply; 4+ messages in thread
From: Greg KH @ 2021-10-03 14:15 UTC (permalink / raw)
  To: Sean Christopherson
  Cc: dje, mathieu.desnoyers, pbonzini, pefoley, shakeelb, tglx, stable

On Mon, Sep 27, 2021 at 07:31:15PM +0000, Sean Christopherson wrote:
> On Sun, Sep 26, 2021, gregkh@linuxfoundation.org wrote:
> > 
> > The patch below does not apply to the 5.10-stable tree.
> > If someone wants it applied there, or to any other stable or longterm
> > tree, then please email the backport, including the original git commit
> > id to <stable@vger.kernel.org>.
> 
> 5.10 backport sent: https://lkml.kernel.org/r/20210927192846.1533905-1-seanjc@google.comb

What about 5.14?

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: FAILED: patch "[PATCH] KVM: rseq: Update rseq when processing NOTIFY_RESUME on xfer" failed to apply to 5.10-stable tree
  2021-10-03 14:15   ` Greg KH
@ 2021-10-04 15:12     ` Sean Christopherson
  0 siblings, 0 replies; 4+ messages in thread
From: Sean Christopherson @ 2021-10-04 15:12 UTC (permalink / raw)
  To: Greg KH; +Cc: dje, mathieu.desnoyers, pbonzini, pefoley, shakeelb, tglx, stable

On Sun, Oct 03, 2021, Greg KH wrote:
> On Mon, Sep 27, 2021 at 07:31:15PM +0000, Sean Christopherson wrote:
> > On Sun, Sep 26, 2021, gregkh@linuxfoundation.org wrote:
> > > 
> > > The patch below does not apply to the 5.10-stable tree.
> > > If someone wants it applied there, or to any other stable or longterm
> > > tree, then please email the backport, including the original git commit
> > > id to <stable@vger.kernel.org>.
> > 
> > 5.10 backport sent: https://lkml.kernel.org/r/20210927192846.1533905-1-seanjc@google.comb
> 
> What about 5.14?

The original patch applied cleanly to 5.14, went in as commit 336dabf99386.

https://lkml.kernel.org/r/20210927170234.621422016@linuxfoundation.org

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-10-04 15:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-26 12:44 FAILED: patch "[PATCH] KVM: rseq: Update rseq when processing NOTIFY_RESUME on xfer" failed to apply to 5.10-stable tree gregkh
2021-09-27 19:31 ` Sean Christopherson
2021-10-03 14:15   ` Greg KH
2021-10-04 15:12     ` Sean Christopherson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.