mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: stable-commits@vger.kernel.org, jpoimboe@kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
	Zack Rusin <zackr@vmware.com>,
	VMware Graphics Reviewers  <linux-graphics-maintainer@vmware.com>,
	David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>
Subject: Re: Patch "drm/vmwgfx: Add unwind hints around RBP clobber" has been added to the 6.4-stable tree
Date: Sun, 9 Jul 2023 11:26:46 +0200	[thread overview]
Message-ID: <2023070929-crayon-pronto-8b3c@gregkh> (raw)
In-Reply-To: <20230709050310.433132-1-sashal@kernel.org>

On Sun, Jul 09, 2023 at 01:03:10AM -0400, Sasha Levin wrote:
> This is a note to let you know that I've just added the patch titled
> 
>     drm/vmwgfx: Add unwind hints around RBP clobber
> 
> to the 6.4-stable tree which can be found at:
>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> 
> The filename of the patch is:
>      drm-vmwgfx-add-unwind-hints-around-rbp-clobber.patch
> and it can be found in the queue-6.4 subdirectory.
> 
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable@vger.kernel.org> know about it.
> 
> 
> 
> commit aeb6b7c6b6ef84ab496189cdbc698426092aa46c
> Author: Josh Poimboeuf <jpoimboe@kernel.org>
> Date:   Mon Jun 5 09:12:22 2023 -0700
> 
>     drm/vmwgfx: Add unwind hints around RBP clobber
>     
>     [ Upstream commit a9da8247627eefc73f909bf945031a5431a53993 ]
>     
>     VMware high-bandwidth hypercalls take the RBP register as input.  This
>     breaks basic frame pointer convention, as RBP should never be clobbered.
>     
>     So frame pointer unwinding is broken for the instructions surrounding
>     the hypercalls.  Fortunately this doesn't break live patching with
>     CONFIG_FRAME_POINTER, as it only unwinds from blocking tasks, and stack
>     traces from preempted tasks are already marked unreliable anyway.
>     
>     However, for live patching with ORC, this could actually be a
>     theoretical problem if vmw_port_hb_{in,out}() were still compiled with a
>     frame pointer due to having an aligned stack.  In practice that hasn't
>     seemed to be an issue since the objtool warnings have only been seen
>     with CONFIG_FRAME_POINTER.
>     
>     Add unwind hint annotations to tell the ORC unwinder to mark stack
>     traces as unreliable.
>     
>     Fixes the following warnings:
>     
>       vmlinux.o: warning: objtool: vmw_port_hb_in+0x1df: return with modified stack frame
>       vmlinux.o: warning: objtool: vmw_port_hb_out+0x1dd: return with modified stack frame
>     
>     Fixes: 89da76fde68d ("drm/vmwgfx: Add VMWare host messaging capability")
>     Reported-by: kernel test robot <lkp@intel.com>
>     Link: https://lore.kernel.org/oe-kbuild-all/202305160135.97q0Elax-lkp@intel.com/
>     Link: https://lore.kernel.org/r/4c795f2d87bc0391cf6543bcb224fa540b55ce4b.1685981486.git.jpoimboe@kernel.org
>     Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
>     Signed-off-by: Sasha Levin <sashal@kernel.org>
> 
> diff --git a/arch/x86/include/asm/unwind_hints.h b/arch/x86/include/asm/unwind_hints.h
> index 01cb9692b160a..85cc57cb65392 100644
> --- a/arch/x86/include/asm/unwind_hints.h
> +++ b/arch/x86/include/asm/unwind_hints.h
> @@ -76,9 +76,18 @@
>  
>  #else
>  
> +#define UNWIND_HINT_UNDEFINED \
> +	UNWIND_HINT(UNWIND_HINT_TYPE_UNDEFINED, 0, 0, 0)
> +
>  #define UNWIND_HINT_FUNC \
>  	UNWIND_HINT(UNWIND_HINT_TYPE_FUNC, ORC_REG_SP, 8, 0)
>  
> +#define UNWIND_HINT_SAVE \
> +	UNWIND_HINT(UNWIND_HINT_TYPE_SAVE, 0, 0, 0)
> +
> +#define UNWIND_HINT_RESTORE \
> +	UNWIND_HINT(UNWIND_HINT_TYPE_RESTORE, 0, 0, 0)
> +
>  #endif /* __ASSEMBLY__ */
>  
>  #endif /* _ASM_X86_UNWIND_HINTS_H */
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_msg_x86.h b/drivers/gpu/drm/vmwgfx/vmwgfx_msg_x86.h
> index 0b74ca2dfb7bd..23899d743a903 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_msg_x86.h
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_msg_x86.h
> @@ -105,10 +105,14 @@
>                          flags, magic, bp,		\
>                          eax, ebx, ecx, edx, si, di)	\
>  ({							\
> -        asm volatile ("push %%rbp;"			\
> +        asm volatile (					\
> +		UNWIND_HINT_SAVE			\
> +		"push %%rbp;"				\
> +		UNWIND_HINT_UNDEFINED			\
>                  "mov %12, %%rbp;"			\
>                  VMWARE_HYPERCALL_HB_OUT			\
> -                "pop %%rbp;" :				\
> +                "pop %%rbp;"				\
> +		UNWIND_HINT_RESTORE :			\
>                  "=a"(eax),				\
>                  "=b"(ebx),				\
>                  "=c"(ecx),				\
> @@ -130,10 +134,14 @@
>                         flags, magic, bp,		\
>                         eax, ebx, ecx, edx, si, di)	\
>  ({							\
> -        asm volatile ("push %%rbp;"			\
> +        asm volatile (					\
> +		UNWIND_HINT_SAVE			\
> +		"push %%rbp;"				\
> +		UNWIND_HINT_UNDEFINED			\
>                  "mov %12, %%rbp;"			\
>                  VMWARE_HYPERCALL_HB_IN			\
> -                "pop %%rbp" :				\
> +                "pop %%rbp;"				\
> +		UNWIND_HINT_RESTORE :			\
>                  "=a"(eax),				\
>                  "=b"(ebx),				\
>                  "=c"(ecx),				\

This adds build warnings to the build, so I am going to drop this one
for now, sorry.

greg k-h

           reply	other threads:[~2023-07-09  9:30 UTC|newest]

Thread overview: expand[flat|nested]  mbox.gz  Atom feed
 [parent not found: <20230709050310.433132-1-sashal@kernel.org>]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2023070929-crayon-pronto-8b3c@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=airlied@gmail.com \
    --cc=bp@alien8.de \
    --cc=daniel@ffwll.ch \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jpoimboe@kernel.org \
    --cc=linux-graphics-maintainer@vmware.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=stable-commits@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=zackr@vmware.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®