0134-x86-decoder-Fix-and-update-the-opcodes-map.patch 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. From 6c80693ba5d8d09e509a5613aa6e51b59a28585c Mon Sep 17 00:00:00 2001
  2. From: Randy Dunlap <[email protected]>
  3. Date: Mon, 11 Dec 2017 10:38:36 -0800
  4. Subject: [PATCH 134/242] x86/decoder: Fix and update the opcodes map
  5. MIME-Version: 1.0
  6. Content-Type: text/plain; charset=UTF-8
  7. Content-Transfer-Encoding: 8bit
  8. CVE-2017-5754
  9. Update x86-opcode-map.txt based on the October 2017 Intel SDM publication.
  10. Fix INVPID to INVVPID.
  11. Add UD0 and UD1 instruction opcodes.
  12. Also sync the objtool and perf tooling copies of this file.
  13. Signed-off-by: Randy Dunlap <[email protected]>
  14. Acked-by: Masami Hiramatsu <[email protected]>
  15. Cc: Josh Poimboeuf <[email protected]>
  16. Cc: Linus Torvalds <[email protected]>
  17. Cc: Masami Hiramatsu <[email protected]>
  18. Cc: Peter Zijlstra <[email protected]>
  19. Cc: Thomas Gleixner <[email protected]>
  20. Link: http://lkml.kernel.org/r/[email protected]
  21. Signed-off-by: Ingo Molnar <[email protected]>
  22. (cherry picked from commit f5395545058cd388da5d99bda3dedd2a2fe56dbc)
  23. Signed-off-by: Andy Whitcroft <[email protected]>
  24. Signed-off-by: Kleber Sacilotto de Souza <[email protected]>
  25. (cherry picked from commit f88b977dde8156d6c4514114baa0eed05dd48e41)
  26. Signed-off-by: Fabian Grünbichler <[email protected]>
  27. ---
  28. arch/x86/lib/x86-opcode-map.txt | 13 +++++++++++--
  29. tools/objtool/arch/x86/lib/x86-opcode-map.txt | 15 ++++++++++++---
  30. tools/perf/util/intel-pt-decoder/x86-opcode-map.txt | 15 ++++++++++++---
  31. 3 files changed, 35 insertions(+), 8 deletions(-)
  32. diff --git a/arch/x86/lib/x86-opcode-map.txt b/arch/x86/lib/x86-opcode-map.txt
  33. index 12e377184ee4..aa2270dc9e87 100644
  34. --- a/arch/x86/lib/x86-opcode-map.txt
  35. +++ b/arch/x86/lib/x86-opcode-map.txt
  36. @@ -607,7 +607,7 @@ fb: psubq Pq,Qq | vpsubq Vx,Hx,Wx (66),(v1)
  37. fc: paddb Pq,Qq | vpaddb Vx,Hx,Wx (66),(v1)
  38. fd: paddw Pq,Qq | vpaddw Vx,Hx,Wx (66),(v1)
  39. fe: paddd Pq,Qq | vpaddd Vx,Hx,Wx (66),(v1)
  40. -ff:
  41. +ff: UD0
  42. EndTable
  43. Table: 3-byte opcode 1 (0x0f 0x38)
  44. @@ -717,7 +717,7 @@ AVXcode: 2
  45. 7e: vpermt2d/q Vx,Hx,Wx (66),(ev)
  46. 7f: vpermt2ps/d Vx,Hx,Wx (66),(ev)
  47. 80: INVEPT Gy,Mdq (66)
  48. -81: INVPID Gy,Mdq (66)
  49. +81: INVVPID Gy,Mdq (66)
  50. 82: INVPCID Gy,Mdq (66)
  51. 83: vpmultishiftqb Vx,Hx,Wx (66),(ev)
  52. 88: vexpandps/d Vpd,Wpd (66),(ev)
  53. @@ -970,6 +970,15 @@ GrpTable: Grp9
  54. EndTable
  55. GrpTable: Grp10
  56. +# all are UD1
  57. +0: UD1
  58. +1: UD1
  59. +2: UD1
  60. +3: UD1
  61. +4: UD1
  62. +5: UD1
  63. +6: UD1
  64. +7: UD1
  65. EndTable
  66. # Grp11A and Grp11B are expressed as Grp11 in Intel SDM
  67. diff --git a/tools/objtool/arch/x86/lib/x86-opcode-map.txt b/tools/objtool/arch/x86/lib/x86-opcode-map.txt
  68. index 12e377184ee4..e0b85930dd77 100644
  69. --- a/tools/objtool/arch/x86/lib/x86-opcode-map.txt
  70. +++ b/tools/objtool/arch/x86/lib/x86-opcode-map.txt
  71. @@ -607,7 +607,7 @@ fb: psubq Pq,Qq | vpsubq Vx,Hx,Wx (66),(v1)
  72. fc: paddb Pq,Qq | vpaddb Vx,Hx,Wx (66),(v1)
  73. fd: paddw Pq,Qq | vpaddw Vx,Hx,Wx (66),(v1)
  74. fe: paddd Pq,Qq | vpaddd Vx,Hx,Wx (66),(v1)
  75. -ff:
  76. +ff: UD0
  77. EndTable
  78. Table: 3-byte opcode 1 (0x0f 0x38)
  79. @@ -717,7 +717,7 @@ AVXcode: 2
  80. 7e: vpermt2d/q Vx,Hx,Wx (66),(ev)
  81. 7f: vpermt2ps/d Vx,Hx,Wx (66),(ev)
  82. 80: INVEPT Gy,Mdq (66)
  83. -81: INVPID Gy,Mdq (66)
  84. +81: INVVPID Gy,Mdq (66)
  85. 82: INVPCID Gy,Mdq (66)
  86. 83: vpmultishiftqb Vx,Hx,Wx (66),(ev)
  87. 88: vexpandps/d Vpd,Wpd (66),(ev)
  88. @@ -896,7 +896,7 @@ EndTable
  89. GrpTable: Grp3_1
  90. 0: TEST Eb,Ib
  91. -1:
  92. +1: TEST Eb,Ib
  93. 2: NOT Eb
  94. 3: NEG Eb
  95. 4: MUL AL,Eb
  96. @@ -970,6 +970,15 @@ GrpTable: Grp9
  97. EndTable
  98. GrpTable: Grp10
  99. +# all are UD1
  100. +0: UD1
  101. +1: UD1
  102. +2: UD1
  103. +3: UD1
  104. +4: UD1
  105. +5: UD1
  106. +6: UD1
  107. +7: UD1
  108. EndTable
  109. # Grp11A and Grp11B are expressed as Grp11 in Intel SDM
  110. diff --git a/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt b/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt
  111. index 12e377184ee4..e0b85930dd77 100644
  112. --- a/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt
  113. +++ b/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt
  114. @@ -607,7 +607,7 @@ fb: psubq Pq,Qq | vpsubq Vx,Hx,Wx (66),(v1)
  115. fc: paddb Pq,Qq | vpaddb Vx,Hx,Wx (66),(v1)
  116. fd: paddw Pq,Qq | vpaddw Vx,Hx,Wx (66),(v1)
  117. fe: paddd Pq,Qq | vpaddd Vx,Hx,Wx (66),(v1)
  118. -ff:
  119. +ff: UD0
  120. EndTable
  121. Table: 3-byte opcode 1 (0x0f 0x38)
  122. @@ -717,7 +717,7 @@ AVXcode: 2
  123. 7e: vpermt2d/q Vx,Hx,Wx (66),(ev)
  124. 7f: vpermt2ps/d Vx,Hx,Wx (66),(ev)
  125. 80: INVEPT Gy,Mdq (66)
  126. -81: INVPID Gy,Mdq (66)
  127. +81: INVVPID Gy,Mdq (66)
  128. 82: INVPCID Gy,Mdq (66)
  129. 83: vpmultishiftqb Vx,Hx,Wx (66),(ev)
  130. 88: vexpandps/d Vpd,Wpd (66),(ev)
  131. @@ -896,7 +896,7 @@ EndTable
  132. GrpTable: Grp3_1
  133. 0: TEST Eb,Ib
  134. -1:
  135. +1: TEST Eb,Ib
  136. 2: NOT Eb
  137. 3: NEG Eb
  138. 4: MUL AL,Eb
  139. @@ -970,6 +970,15 @@ GrpTable: Grp9
  140. EndTable
  141. GrpTable: Grp10
  142. +# all are UD1
  143. +0: UD1
  144. +1: UD1
  145. +2: UD1
  146. +3: UD1
  147. +4: UD1
  148. +5: UD1
  149. +6: UD1
  150. +7: UD1
  151. EndTable
  152. # Grp11A and Grp11B are expressed as Grp11 in Intel SDM
  153. --
  154. 2.14.2