FAILED: patch "[PATCH] x86/insn-eval: Use new for_each_insn_prefix() macro to loop" failed to apply to 5.9-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.9-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 <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 12cb908a11b2544b5f53e9af856e6b6a90ed5533 Mon Sep 17 00:00:00 2001
From: Masami Hiramatsu <[email protected]>
Date: Thu, 3 Dec 2020 13:50:50 +0900
Subject: [PATCH] x86/insn-eval: Use new for_each_insn_prefix() macro to loop
over prefixes bytes
Since insn.prefixes.nbytes can be bigger than the size of insn.prefixes.bytes[] when a prefix is repeated, the proper check must be
insn.prefixes.bytes[i] != 0 and i < 4
instead of using insn.prefixes.nbytes. Use the new for_each_insn_prefix() macro which does it correctly.
Debugged by Kees Cook <[email protected]>.
[ bp: Massage commit message. ]
arch/x86/lib/insn-eval.c +5 -5
@@ -63,13 +63,12 @@ static bool is_string_insn(struct insn *insn)*/ bool insn_has_rep_prefix (struct insn *insn) { +insn_byte_t p;int i;insn_get_prefixes (insn); -for (i =0 ; i < insn->prefixes.nbytes; i++) { -insn_byte_t p = insn->prefixes.bytes[i]; - +for_each_insn_prefix (insn, i, p) {if (p ==0xf2 || p ==0xf3 )return true; }
@@ -95,14 +94,15 @@ static int get_seg_reg_override_idx(struct insn *insn) {int idx =INAT_SEG_REG_DEFAULT ;int num_overrides =0 , i; +insn_byte_t p;insn_get_prefixes (insn);/* Look for any segment override prefixes. */ -for (i =0 ; i < insn->prefixes.nbytes; i++) { +for_each_insn_prefix (insn, i, p) {insn_attr_t attr; - attr =inat_get_opcode_attribute (insn->prefixes.bytes[i]); + attr =inat_get_opcode_attribute (p);switch (attr) {case INAT_MAKE_PREFIX (INAT_PFX_CS ): idx =INAT_SEG_REG_CS ;
Hi Greg,
Quoted 5 lines · On Wed, Dec 09, 2020 at 09:48:07AM +0100, [email protected] wrote:
The patch below does not apply to the 5.9-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 <[email protected]>.
Here is the backport. Will apply to all branches till 4.19-stable.
--
Regards
Sudip
From 948726feb2ca94059d75f09ee5b4f78343f9d2d8 Mon Sep 17 00:00:00 2001
From: Masami Hiramatsu <[email protected]>
Date: Thu, 3 Dec 2020 13:50:50 +0900
Subject: [PATCH] x86/insn-eval: Use new for_each_insn_prefix() macro to loop over prefixes bytes
commit 12cb908a11b2544b5f53e9af856e6b6a90ed5533 upstream
Since insn.prefixes.nbytes can be bigger than the size of insn.prefixes.bytes[] when a prefix is repeated, the proper check must be
insn.prefixes.bytes[i] != 0 and i < 4
instead of using insn.prefixes.nbytes. Use the new for_each_insn_prefix() macro which does it correctly.
Debugged by Kees Cook <[email protected]>.
[ bp: Massage commit message. ]
--- arch/x86/lib/insn-eval.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
arch/x86/lib/insn-eval.c +3 -2
@@ -70,14 +70,15 @@ static int get_seg_reg_override_idx(struct insn *insn) {int idx =INAT_SEG_REG_DEFAULT ;int num_overrides =0 , i; +insn_byte_t p;insn_get_prefixes (insn);/* Look for any segment override prefixes. */ -for (i =0 ; i < insn->prefixes.nbytes; i++) { +for_each_insn_prefix (insn, i, p) {insn_attr_t attr; - attr =inat_get_opcode_attribute (insn->prefixes.bytes[i]); + attr =inat_get_opcode_attribute (p);switch (attr) {case INAT_MAKE_PREFIX (INAT_PFX_CS ): idx =INAT_SEG_REG_CS ;
Signature · 1 line
2.11.0
Greg KH
maintainerQuoted 10 lines · Sudip Mukherjee
Hi Greg,
Quoted 5 lines · On Wed, Dec 09, 2020 at 09:48:07AM +0100, [email protected] wrote:
The patch below does not apply to the 5.9-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 <[email protected]>.Here is the backport. Will apply to all branches till 4.19-stable.
Thanks, now queued up!
greg k-h