ld_imm64.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. {
  2. "test1 ld_imm64",
  3. .insns = {
  4. BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
  5. BPF_LD_IMM64(BPF_REG_0, 0),
  6. BPF_LD_IMM64(BPF_REG_0, 0),
  7. BPF_LD_IMM64(BPF_REG_0, 1),
  8. BPF_LD_IMM64(BPF_REG_0, 1),
  9. BPF_MOV64_IMM(BPF_REG_0, 2),
  10. BPF_EXIT_INSN(),
  11. },
  12. .errstr = "jump into the middle of ldimm64 insn 1",
  13. .errstr_unpriv = "jump into the middle of ldimm64 insn 1",
  14. .result = REJECT,
  15. },
  16. {
  17. "test2 ld_imm64",
  18. .insns = {
  19. BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
  20. BPF_LD_IMM64(BPF_REG_0, 0),
  21. BPF_LD_IMM64(BPF_REG_0, 0),
  22. BPF_LD_IMM64(BPF_REG_0, 1),
  23. BPF_LD_IMM64(BPF_REG_0, 1),
  24. BPF_EXIT_INSN(),
  25. },
  26. .errstr = "jump into the middle of ldimm64 insn 1",
  27. .errstr_unpriv = "jump into the middle of ldimm64 insn 1",
  28. .result = REJECT,
  29. },
  30. {
  31. "test3 ld_imm64",
  32. .insns = {
  33. BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
  34. BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
  35. BPF_LD_IMM64(BPF_REG_0, 0),
  36. BPF_LD_IMM64(BPF_REG_0, 0),
  37. BPF_LD_IMM64(BPF_REG_0, 1),
  38. BPF_LD_IMM64(BPF_REG_0, 1),
  39. BPF_EXIT_INSN(),
  40. },
  41. .errstr = "invalid bpf_ld_imm64 insn",
  42. .result = REJECT,
  43. },
  44. {
  45. "test4 ld_imm64",
  46. .insns = {
  47. BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
  48. BPF_EXIT_INSN(),
  49. },
  50. .errstr = "invalid bpf_ld_imm64 insn",
  51. .result = REJECT,
  52. },
  53. {
  54. "test6 ld_imm64",
  55. .insns = {
  56. BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
  57. BPF_RAW_INSN(0, 0, 0, 0, 0),
  58. BPF_EXIT_INSN(),
  59. },
  60. .result = ACCEPT,
  61. },
  62. {
  63. "test7 ld_imm64",
  64. .insns = {
  65. BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
  66. BPF_RAW_INSN(0, 0, 0, 0, 1),
  67. BPF_EXIT_INSN(),
  68. },
  69. .result = ACCEPT,
  70. .retval = 1,
  71. },
  72. {
  73. "test8 ld_imm64",
  74. .insns = {
  75. BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 1, 1),
  76. BPF_RAW_INSN(0, 0, 0, 0, 1),
  77. BPF_EXIT_INSN(),
  78. },
  79. .errstr = "uses reserved fields",
  80. .result = REJECT,
  81. },
  82. {
  83. "test9 ld_imm64",
  84. .insns = {
  85. BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
  86. BPF_RAW_INSN(0, 0, 0, 1, 1),
  87. BPF_EXIT_INSN(),
  88. },
  89. .errstr = "invalid bpf_ld_imm64 insn",
  90. .result = REJECT,
  91. },
  92. {
  93. "test10 ld_imm64",
  94. .insns = {
  95. BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
  96. BPF_RAW_INSN(0, BPF_REG_1, 0, 0, 1),
  97. BPF_EXIT_INSN(),
  98. },
  99. .errstr = "invalid bpf_ld_imm64 insn",
  100. .result = REJECT,
  101. },
  102. {
  103. "test11 ld_imm64",
  104. .insns = {
  105. BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
  106. BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1),
  107. BPF_EXIT_INSN(),
  108. },
  109. .errstr = "invalid bpf_ld_imm64 insn",
  110. .result = REJECT,
  111. },
  112. {
  113. "test12 ld_imm64",
  114. .insns = {
  115. BPF_MOV64_IMM(BPF_REG_1, 0),
  116. BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1),
  117. BPF_RAW_INSN(0, 0, 0, 0, 0),
  118. BPF_EXIT_INSN(),
  119. },
  120. .errstr = "not pointing to valid bpf_map",
  121. .result = REJECT,
  122. },
  123. {
  124. "test13 ld_imm64",
  125. .insns = {
  126. BPF_MOV64_IMM(BPF_REG_1, 0),
  127. BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1),
  128. BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1),
  129. BPF_EXIT_INSN(),
  130. },
  131. .errstr = "invalid bpf_ld_imm64 insn",
  132. .result = REJECT,
  133. },
  134. {
  135. "test14 ld_imm64: reject 2nd imm != 0",
  136. .insns = {
  137. BPF_MOV64_IMM(BPF_REG_0, 0),
  138. BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, BPF_REG_1,
  139. BPF_PSEUDO_MAP_FD, 0, 0),
  140. BPF_RAW_INSN(0, 0, 0, 0, 0xfefefe),
  141. BPF_EXIT_INSN(),
  142. },
  143. .fixup_map_hash_48b = { 1 },
  144. .errstr = "unrecognized bpf_ld_imm64 insn",
  145. .result = REJECT,
  146. },