All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20230824170623.040455914@linuxfoundation.org>

diff --git a/a/1.txt b/N1/1.txt
index eb062e3..4ab55fa 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,61 +1,79 @@
-5.10-stable review patch.  If anyone has any objections, please let me know.
+> 5.10-stable review patch.  If anyone has any objections, please let me know.
+> 
+> ------------------
+> 
+> From: Peter Zijlstra <peterz@infradead.org>
+> 
+> commit dbf46008775516f7f25c95b7760041c286299783 upstream.
+> 
+> For stack-validation of a frame-pointer build, objtool validates that
+> every CALL instruction is preceded by a frame-setup. The new SRSO
+> return thunks violate this with their RSB stuffing trickery.
+> 
+> Extend the __fentry__ exception to also cover the embedded_insn case
+> used for this. This cures:
+> 
+>   vmlinux.o: warning: objtool: srso_untrain_ret+0xd: call without frame pointer save/setup
+> 
+> Fixes: 4ae68b26c3ab ("objtool/x86: Fix SRSO mess")
+> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
+> Acked-by: Josh Poimboeuf <jpoimboe@kernel.org>
+> Link: https://lore.kernel.org/r/20230816115921.GH980931@hirez.programming.kicks-ass.net
+> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+> ---
+>  tools/objtool/check.c |   17 +++++++++++------
+>  1 file changed, 11 insertions(+), 6 deletions(-)
+> 
+> --- a/tools/objtool/check.c
+> +++ b/tools/objtool/check.c
+> @@ -2079,12 +2079,17 @@ static int decode_sections(struct objtoo
+>  	return 0;
+>  }
+>  
+> -static bool is_fentry_call(struct instruction *insn)
+> +static bool is_special_call(struct instruction *insn)
+>  {
+> -	if (insn->type == INSN_CALL &&
+> -	    insn->call_dest &&
+> -	    insn->call_dest->fentry)
+> -		return true;
+> +	if (insn->type == INSN_CALL) {
+> +		struct symbol *dest = insn->call_dest;
+> +
+> +		if (!dest)
+> +			return false;
+> +
+> +		if (dest->fentry)
+> +			return true;
+> +	}
+>  
+>  	return false;
+>  }
+> @@ -2958,7 +2963,7 @@ static int validate_branch(struct objtoo
+>  			if (ret)
+>  				return ret;
+>  
+> -			if (!no_fp && func && !is_fentry_call(insn) &&
+> +			if (!no_fp && func && !is_special_call(insn) &&
+>  			    !has_valid_stack_frame(&state)) {
+>  				WARN_FUNC("call without frame pointer save/setup",
+>  					  sec, insn->offset);
+> 
+> 
+> 
 
-------------------
-
-From: Peter Zijlstra <peterz@infradead.org>
-
-commit dbf46008775516f7f25c95b7760041c286299783 upstream.
-
-For stack-validation of a frame-pointer build, objtool validates that
-every CALL instruction is preceded by a frame-setup. The new SRSO
-return thunks violate this with their RSB stuffing trickery.
-
-Extend the __fentry__ exception to also cover the embedded_insn case
-used for this. This cures:
-
-  vmlinux.o: warning: objtool: srso_untrain_ret+0xd: call without frame pointer save/setup
-
-Fixes: 4ae68b26c3ab ("objtool/x86: Fix SRSO mess")
-Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
-Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
-Acked-by: Josh Poimboeuf <jpoimboe@kernel.org>
-Link: https://lore.kernel.org/r/20230816115921.GH980931@hirez.programming.kicks-ass.net
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- tools/objtool/check.c |   17 +++++++++++------
- 1 file changed, 11 insertions(+), 6 deletions(-)
+We still see the 'srso_untrain_ret+0xd: call without frame pointer save/setup' warning with v5.15.136.  It looks like the backport might be incomplete.  Is this additional change needed?
 
+diff --git a/tools/objtool/check.c b/tools/objtool/check.c
+index 36ad0b6b94a9..c3bb96e5bfa6 100644
 --- a/tools/objtool/check.c
 +++ b/tools/objtool/check.c
-@@ -2079,12 +2079,17 @@ static int decode_sections(struct objtoo
- 	return 0;
- }
- 
--static bool is_fentry_call(struct instruction *insn)
-+static bool is_special_call(struct instruction *insn)
- {
--	if (insn->type == INSN_CALL &&
--	    insn->call_dest &&
--	    insn->call_dest->fentry)
--		return true;
-+	if (insn->type == INSN_CALL) {
-+		struct symbol *dest = insn->call_dest;
-+
-+		if (!dest)
-+			return false;
-+
-+		if (dest->fentry)
-+			return true;
-+	}
- 
- 	return false;
- }
-@@ -2958,7 +2963,7 @@ static int validate_branch(struct objtoo
- 			if (ret)
- 				return ret;
+@@ -2202,7 +2202,7 @@ static bool is_special_call(struct instruction *insn)
+ 		if (!dest)
+ 			return false;
  
--			if (!no_fp && func && !is_fentry_call(insn) &&
-+			if (!no_fp && func && !is_special_call(insn) &&
- 			    !has_valid_stack_frame(&state)) {
- 				WARN_FUNC("call without frame pointer save/setup",
- 					  sec, insn->offset);
+-		if (dest->fentry)
++		if (dest->fentry || dest->embedded_insn)
+ 			return true;
+ 	}
diff --git a/a/content_digest b/N1/content_digest
index 3714012..854fb5c 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,75 +1,93 @@
  "ref\020230824170617.074557800@linuxfoundation.org\0"
- "From\0Greg Kroah-Hartman <gregkh@linuxfoundation.org>\0"
+ "From\0John Sperbeck <jsperbeck@google.com>\0"
  "Subject\0[PATCH 5.10 134/135] objtool/x86: Fixup frame-pointer vs rethunk\0"
- "Date\0Thu, 24 Aug 2023 19:10:06 +0200\0"
- "To\0stable@vger.kernel.org\0"
- "Cc\0Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
+ "Date\0Tue, 24 Oct 2023 17:47:54 +0000\0"
+ "To\0gregkh@linuxfoundation.org\0"
+ "Cc\0bp@alien8.de"
+  jpoimboe@kernel.org
   patches@lists.linux.dev
-  Peter Zijlstra (Intel) <peterz@infradead.org>
-  Borislav Petkov (AMD) <bp@alien8.de>
- " Josh Poimboeuf <jpoimboe@kernel.org>\0"
+  peterz@infradead.org
+ " stable@vger.kernel.org\0"
  "\00:1\0"
  "b\0"
- "5.10-stable review patch.  If anyone has any objections, please let me know.\n"
+ "> 5.10-stable review patch.  If anyone has any objections, please let me know.\n"
+ "> \n"
+ "> ------------------\n"
+ "> \n"
+ "> From: Peter Zijlstra <peterz@infradead.org>\n"
+ "> \n"
+ "> commit dbf46008775516f7f25c95b7760041c286299783 upstream.\n"
+ "> \n"
+ "> For stack-validation of a frame-pointer build, objtool validates that\n"
+ "> every CALL instruction is preceded by a frame-setup. The new SRSO\n"
+ "> return thunks violate this with their RSB stuffing trickery.\n"
+ "> \n"
+ "> Extend the __fentry__ exception to also cover the embedded_insn case\n"
+ "> used for this. This cures:\n"
+ "> \n"
+ ">   vmlinux.o: warning: objtool: srso_untrain_ret+0xd: call without frame pointer save/setup\n"
+ "> \n"
+ "> Fixes: 4ae68b26c3ab (\"objtool/x86: Fix SRSO mess\")\n"
+ "> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>\n"
+ "> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>\n"
+ "> Acked-by: Josh Poimboeuf <jpoimboe@kernel.org>\n"
+ "> Link: https://lore.kernel.org/r/20230816115921.GH980931@hirez.programming.kicks-ass.net\n"
+ "> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>\n"
+ "> ---\n"
+ ">  tools/objtool/check.c |   17 +++++++++++------\n"
+ ">  1 file changed, 11 insertions(+), 6 deletions(-)\n"
+ "> \n"
+ "> --- a/tools/objtool/check.c\n"
+ "> +++ b/tools/objtool/check.c\n"
+ "> @@ -2079,12 +2079,17 @@ static int decode_sections(struct objtoo\n"
+ ">  \treturn 0;\n"
+ ">  }\n"
+ ">  \n"
+ "> -static bool is_fentry_call(struct instruction *insn)\n"
+ "> +static bool is_special_call(struct instruction *insn)\n"
+ ">  {\n"
+ "> -\tif (insn->type == INSN_CALL &&\n"
+ "> -\t    insn->call_dest &&\n"
+ "> -\t    insn->call_dest->fentry)\n"
+ "> -\t\treturn true;\n"
+ "> +\tif (insn->type == INSN_CALL) {\n"
+ "> +\t\tstruct symbol *dest = insn->call_dest;\n"
+ "> +\n"
+ "> +\t\tif (!dest)\n"
+ "> +\t\t\treturn false;\n"
+ "> +\n"
+ "> +\t\tif (dest->fentry)\n"
+ "> +\t\t\treturn true;\n"
+ "> +\t}\n"
+ ">  \n"
+ ">  \treturn false;\n"
+ ">  }\n"
+ "> @@ -2958,7 +2963,7 @@ static int validate_branch(struct objtoo\n"
+ ">  \t\t\tif (ret)\n"
+ ">  \t\t\t\treturn ret;\n"
+ ">  \n"
+ "> -\t\t\tif (!no_fp && func && !is_fentry_call(insn) &&\n"
+ "> +\t\t\tif (!no_fp && func && !is_special_call(insn) &&\n"
+ ">  \t\t\t    !has_valid_stack_frame(&state)) {\n"
+ ">  \t\t\t\tWARN_FUNC(\"call without frame pointer save/setup\",\n"
+ ">  \t\t\t\t\t  sec, insn->offset);\n"
+ "> \n"
+ "> \n"
+ "> \n"
  "\n"
- "------------------\n"
- "\n"
- "From: Peter Zijlstra <peterz@infradead.org>\n"
- "\n"
- "commit dbf46008775516f7f25c95b7760041c286299783 upstream.\n"
- "\n"
- "For stack-validation of a frame-pointer build, objtool validates that\n"
- "every CALL instruction is preceded by a frame-setup. The new SRSO\n"
- "return thunks violate this with their RSB stuffing trickery.\n"
- "\n"
- "Extend the __fentry__ exception to also cover the embedded_insn case\n"
- "used for this. This cures:\n"
- "\n"
- "  vmlinux.o: warning: objtool: srso_untrain_ret+0xd: call without frame pointer save/setup\n"
- "\n"
- "Fixes: 4ae68b26c3ab (\"objtool/x86: Fix SRSO mess\")\n"
- "Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>\n"
- "Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>\n"
- "Acked-by: Josh Poimboeuf <jpoimboe@kernel.org>\n"
- "Link: https://lore.kernel.org/r/20230816115921.GH980931@hirez.programming.kicks-ass.net\n"
- "Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>\n"
- "---\n"
- " tools/objtool/check.c |   17 +++++++++++------\n"
- " 1 file changed, 11 insertions(+), 6 deletions(-)\n"
+ "We still see the 'srso_untrain_ret+0xd: call without frame pointer save/setup' warning with v5.15.136.  It looks like the backport might be incomplete.  Is this additional change needed?\n"
  "\n"
+ "diff --git a/tools/objtool/check.c b/tools/objtool/check.c\n"
+ "index 36ad0b6b94a9..c3bb96e5bfa6 100644\n"
  "--- a/tools/objtool/check.c\n"
  "+++ b/tools/objtool/check.c\n"
- "@@ -2079,12 +2079,17 @@ static int decode_sections(struct objtoo\n"
- " \treturn 0;\n"
- " }\n"
- " \n"
- "-static bool is_fentry_call(struct instruction *insn)\n"
- "+static bool is_special_call(struct instruction *insn)\n"
- " {\n"
- "-\tif (insn->type == INSN_CALL &&\n"
- "-\t    insn->call_dest &&\n"
- "-\t    insn->call_dest->fentry)\n"
- "-\t\treturn true;\n"
- "+\tif (insn->type == INSN_CALL) {\n"
- "+\t\tstruct symbol *dest = insn->call_dest;\n"
- "+\n"
- "+\t\tif (!dest)\n"
- "+\t\t\treturn false;\n"
- "+\n"
- "+\t\tif (dest->fentry)\n"
- "+\t\t\treturn true;\n"
- "+\t}\n"
- " \n"
- " \treturn false;\n"
- " }\n"
- "@@ -2958,7 +2963,7 @@ static int validate_branch(struct objtoo\n"
- " \t\t\tif (ret)\n"
- " \t\t\t\treturn ret;\n"
+ "@@ -2202,7 +2202,7 @@ static bool is_special_call(struct instruction *insn)\n"
+ " \t\tif (!dest)\n"
+ " \t\t\treturn false;\n"
  " \n"
- "-\t\t\tif (!no_fp && func && !is_fentry_call(insn) &&\n"
- "+\t\t\tif (!no_fp && func && !is_special_call(insn) &&\n"
- " \t\t\t    !has_valid_stack_frame(&state)) {\n"
- " \t\t\t\tWARN_FUNC(\"call without frame pointer save/setup\",\n"
- " \t\t\t\t\t  sec, insn->offset);"
+ "-\t\tif (dest->fentry)\n"
+ "+\t\tif (dest->fentry || dest->embedded_insn)\n"
+ " \t\t\treturn true;\n"
+ " \t}"
 
-c14994682c4979f5f2a82f98f8f601b5ba5ada215739193bf0df8d927d4a161d
+c04bd00ee3e468ef4578e02f26317dcb5045a5a6d08ba24b8c4f36762f3ed4e0

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.