2020-04-19 22:48:36

by Ivan Delalande

[permalink] [raw]
Subject: [PATCH] scripts/decodecode: fix trapping instruction formatting

If the trapping instruction contains a ':', for a memory access through
segment registers for example, the sed substitution will insert the '*'
marker in the middle of the instruction instead of the line address:

2b: 65 48 0f c7 0f cmpxchg16b %gs:*(%rdi) <-- trapping instruction

I started to think I had forgotten some quirk of the assembly syntax
before noticing that it was actually coming from the script. Fix it to
add the address marker at the right place for these instructions:

28: 49 8b 06 mov (%r14),%rax
2b:* 65 48 0f c7 0f cmpxchg16b %gs:(%rdi) <-- trapping instruction
30: 0f 94 c0 sete %al

Fixes: 18ff44b189e2 ("scripts/decodecode: make faulting insn ptr more robust")
Signed-off-by: Ivan Delalande <[email protected]>
---
scripts/decodecode | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/decodecode b/scripts/decodecode
index ba8b8d5834e6..fbdb325cdf4f 100755
--- a/scripts/decodecode
+++ b/scripts/decodecode
@@ -126,7 +126,7 @@ faultlinenum=$(( $(wc -l $T.oo | cut -d" " -f1) - \
faultline=`cat $T.dis | head -1 | cut -d":" -f2-`
faultline=`echo "$faultline" | sed -e 's/\[/\\\[/g; s/\]/\\\]/g'`

-cat $T.oo | sed -e "${faultlinenum}s/^\(.*:\)\(.*\)/\1\*\2\t\t<-- trapping instruction/"
+cat $T.oo | sed -e "${faultlinenum}s/^\([^:]*:\)\(.*\)/\1\*\2\t\t<-- trapping instruction/"
echo
cat $T.aa
cleanup
--
Ivan Delalande
Arista Networks


2020-04-20 09:01:33

by Borislav Petkov

[permalink] [raw]
Subject: Re: [PATCH] scripts/decodecode: fix trapping instruction formatting

On Sun, Apr 19, 2020 at 03:36:53PM -0700, Ivan Delalande wrote:
> If the trapping instruction contains a ':', for a memory access through
> segment registers for example, the sed substitution will insert the '*'
> marker in the middle of the instruction instead of the line address:
>
> 2b: 65 48 0f c7 0f cmpxchg16b %gs:*(%rdi) <-- trapping instruction
>
> I started to think I had forgotten some quirk of the assembly syntax
> before noticing that it was actually coming from the script. Fix it to
> add the address marker at the right place for these instructions:
>
> 28: 49 8b 06 mov (%r14),%rax
> 2b:* 65 48 0f c7 0f cmpxchg16b %gs:(%rdi) <-- trapping instruction
> 30: 0f 94 c0 sete %al
>
> Fixes: 18ff44b189e2 ("scripts/decodecode: make faulting insn ptr more robust")
> Signed-off-by: Ivan Delalande <[email protected]>
> ---
> scripts/decodecode | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/decodecode b/scripts/decodecode
> index ba8b8d5834e6..fbdb325cdf4f 100755
> --- a/scripts/decodecode
> +++ b/scripts/decodecode
> @@ -126,7 +126,7 @@ faultlinenum=$(( $(wc -l $T.oo | cut -d" " -f1) - \
> faultline=`cat $T.dis | head -1 | cut -d":" -f2-`
> faultline=`echo "$faultline" | sed -e 's/\[/\\\[/g; s/\]/\\\]/g'`
>
> -cat $T.oo | sed -e "${faultlinenum}s/^\(.*:\)\(.*\)/\1\*\2\t\t<-- trapping instruction/"
> +cat $T.oo | sed -e "${faultlinenum}s/^\([^:]*:\)\(.*\)/\1\*\2\t\t<-- trapping instruction/"
> echo
> cat $T.aa
> cleanup
> --

Nice catch, thanks.

Reviewed-by: Borislav Petkov <[email protected]>

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette