Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
  1/* Just make sure that JITs used udiv/umod as otherwise we get
  2 * an exception from INT_MIN/-1 overflow similarly as with div
  3 * by zero.
  4 */
  5{
  6	"DIV32 overflow, check 1",
  7	.insns = {
  8	BPF_MOV32_IMM(BPF_REG_1, -1),
  9	BPF_MOV32_IMM(BPF_REG_0, INT_MIN),
 10	BPF_ALU32_REG(BPF_DIV, BPF_REG_0, BPF_REG_1),
 11	BPF_EXIT_INSN(),
 12	},
 13	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
 14	.result = ACCEPT,
 15	.retval = 0,
 16},
 17{
 18	"DIV32 overflow, check 2",
 19	.insns = {
 20	BPF_MOV32_IMM(BPF_REG_0, INT_MIN),
 21	BPF_ALU32_IMM(BPF_DIV, BPF_REG_0, -1),
 22	BPF_EXIT_INSN(),
 23	},
 24	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
 25	.result = ACCEPT,
 26	.retval = 0,
 27},
 28{
 29	"DIV64 overflow, check 1",
 30	.insns = {
 31	BPF_MOV64_IMM(BPF_REG_1, -1),
 32	BPF_LD_IMM64(BPF_REG_2, LLONG_MIN),
 33	BPF_ALU64_REG(BPF_DIV, BPF_REG_2, BPF_REG_1),
 34	BPF_MOV32_IMM(BPF_REG_0, 0),
 35	BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_2, 1),
 36	BPF_MOV32_IMM(BPF_REG_0, 1),
 37	BPF_EXIT_INSN(),
 38	},
 39	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
 40	.result = ACCEPT,
 41	.retval = 0,
 42},
 43{
 44	"DIV64 overflow, check 2",
 45	.insns = {
 46	BPF_LD_IMM64(BPF_REG_1, LLONG_MIN),
 47	BPF_ALU64_IMM(BPF_DIV, BPF_REG_1, -1),
 48	BPF_MOV32_IMM(BPF_REG_0, 0),
 49	BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_1, 1),
 50	BPF_MOV32_IMM(BPF_REG_0, 1),
 51	BPF_EXIT_INSN(),
 52	},
 53	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
 54	.result = ACCEPT,
 55	.retval = 0,
 56},
 57{
 58	"MOD32 overflow, check 1",
 59	.insns = {
 60	BPF_MOV32_IMM(BPF_REG_1, -1),
 61	BPF_MOV32_IMM(BPF_REG_0, INT_MIN),
 62	BPF_ALU32_REG(BPF_MOD, BPF_REG_0, BPF_REG_1),
 63	BPF_EXIT_INSN(),
 64	},
 65	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
 66	.result = ACCEPT,
 67	.retval = INT_MIN,
 68},
 69{
 70	"MOD32 overflow, check 2",
 71	.insns = {
 72	BPF_MOV32_IMM(BPF_REG_0, INT_MIN),
 73	BPF_ALU32_IMM(BPF_MOD, BPF_REG_0, -1),
 74	BPF_EXIT_INSN(),
 75	},
 76	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
 77	.result = ACCEPT,
 78	.retval = INT_MIN,
 79},
 80{
 81	"MOD64 overflow, check 1",
 82	.insns = {
 83	BPF_MOV64_IMM(BPF_REG_1, -1),
 84	BPF_LD_IMM64(BPF_REG_2, LLONG_MIN),
 85	BPF_MOV64_REG(BPF_REG_3, BPF_REG_2),
 86	BPF_ALU64_REG(BPF_MOD, BPF_REG_2, BPF_REG_1),
 87	BPF_MOV32_IMM(BPF_REG_0, 0),
 88	BPF_JMP_REG(BPF_JNE, BPF_REG_3, BPF_REG_2, 1),
 89	BPF_MOV32_IMM(BPF_REG_0, 1),
 90	BPF_EXIT_INSN(),
 91	},
 92	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
 93	.result = ACCEPT,
 94	.retval = 1,
 95},
 96{
 97	"MOD64 overflow, check 2",
 98	.insns = {
 99	BPF_LD_IMM64(BPF_REG_2, LLONG_MIN),
100	BPF_MOV64_REG(BPF_REG_3, BPF_REG_2),
101	BPF_ALU64_IMM(BPF_MOD, BPF_REG_2, -1),
102	BPF_MOV32_IMM(BPF_REG_0, 0),
103	BPF_JMP_REG(BPF_JNE, BPF_REG_3, BPF_REG_2, 1),
104	BPF_MOV32_IMM(BPF_REG_0, 1),
105	BPF_EXIT_INSN(),
106	},
107	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
108	.result = ACCEPT,
109	.retval = 1,
110},