diff options
Diffstat (limited to 'lib/test_bpf.c')
-rw-r--r-- | lib/test_bpf.c | 53 |
1 files changed, 51 insertions, 2 deletions
diff --git a/lib/test_bpf.c b/lib/test_bpf.c index 23e070bcf72d..80d78c51f65f 100644 --- a/lib/test_bpf.c +++ b/lib/test_bpf.c | |||
@@ -124,7 +124,7 @@ static struct bpf_test tests[] = { | |||
124 | { { 0, 0xfffffffd } } | 124 | { { 0, 0xfffffffd } } |
125 | }, | 125 | }, |
126 | { | 126 | { |
127 | "DIV_KX", | 127 | "DIV_MOD_KX", |
128 | .u.insns = { | 128 | .u.insns = { |
129 | BPF_STMT(BPF_LD | BPF_IMM, 8), | 129 | BPF_STMT(BPF_LD | BPF_IMM, 8), |
130 | BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 2), | 130 | BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 2), |
@@ -134,12 +134,18 @@ static struct bpf_test tests[] = { | |||
134 | BPF_STMT(BPF_MISC | BPF_TAX, 0), | 134 | BPF_STMT(BPF_MISC | BPF_TAX, 0), |
135 | BPF_STMT(BPF_LD | BPF_IMM, 0xffffffff), | 135 | BPF_STMT(BPF_LD | BPF_IMM, 0xffffffff), |
136 | BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 0x70000000), | 136 | BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 0x70000000), |
137 | BPF_STMT(BPF_MISC | BPF_TAX, 0), | ||
138 | BPF_STMT(BPF_LD | BPF_IMM, 0xffffffff), | ||
139 | BPF_STMT(BPF_ALU | BPF_MOD | BPF_X, 0), | ||
140 | BPF_STMT(BPF_MISC | BPF_TAX, 0), | ||
141 | BPF_STMT(BPF_LD | BPF_IMM, 0xffffffff), | ||
142 | BPF_STMT(BPF_ALU | BPF_MOD | BPF_K, 0x70000000), | ||
137 | BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0), | 143 | BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0), |
138 | BPF_STMT(BPF_RET | BPF_A, 0) | 144 | BPF_STMT(BPF_RET | BPF_A, 0) |
139 | }, | 145 | }, |
140 | CLASSIC | FLAG_NO_DATA, | 146 | CLASSIC | FLAG_NO_DATA, |
141 | { }, | 147 | { }, |
142 | { { 0, 0x40000001 } } | 148 | { { 0, 0x20000000 } } |
143 | }, | 149 | }, |
144 | { | 150 | { |
145 | "AND_OR_LSH_K", | 151 | "AND_OR_LSH_K", |
@@ -1756,6 +1762,49 @@ static struct bpf_test tests[] = { | |||
1756 | { }, | 1762 | { }, |
1757 | { { 0, 1 } } | 1763 | { { 0, 1 } } |
1758 | }, | 1764 | }, |
1765 | { | ||
1766 | "nmap reduced", | ||
1767 | .u.insns_int = { | ||
1768 | BPF_MOV64_REG(R6, R1), | ||
1769 | BPF_LD_ABS(BPF_H, 12), | ||
1770 | BPF_JMP_IMM(BPF_JNE, R0, 0x806, 28), | ||
1771 | BPF_LD_ABS(BPF_H, 12), | ||
1772 | BPF_JMP_IMM(BPF_JNE, R0, 0x806, 26), | ||
1773 | BPF_MOV32_IMM(R0, 18), | ||
1774 | BPF_STX_MEM(BPF_W, R10, R0, -64), | ||
1775 | BPF_LDX_MEM(BPF_W, R7, R10, -64), | ||
1776 | BPF_LD_IND(BPF_W, R7, 14), | ||
1777 | BPF_STX_MEM(BPF_W, R10, R0, -60), | ||
1778 | BPF_MOV32_IMM(R0, 280971478), | ||
1779 | BPF_STX_MEM(BPF_W, R10, R0, -56), | ||
1780 | BPF_LDX_MEM(BPF_W, R7, R10, -56), | ||
1781 | BPF_LDX_MEM(BPF_W, R0, R10, -60), | ||
1782 | BPF_ALU32_REG(BPF_SUB, R0, R7), | ||
1783 | BPF_JMP_IMM(BPF_JNE, R0, 0, 15), | ||
1784 | BPF_LD_ABS(BPF_H, 12), | ||
1785 | BPF_JMP_IMM(BPF_JNE, R0, 0x806, 13), | ||
1786 | BPF_MOV32_IMM(R0, 22), | ||
1787 | BPF_STX_MEM(BPF_W, R10, R0, -56), | ||
1788 | BPF_LDX_MEM(BPF_W, R7, R10, -56), | ||
1789 | BPF_LD_IND(BPF_H, R7, 14), | ||
1790 | BPF_STX_MEM(BPF_W, R10, R0, -52), | ||
1791 | BPF_MOV32_IMM(R0, 17366), | ||
1792 | BPF_STX_MEM(BPF_W, R10, R0, -48), | ||
1793 | BPF_LDX_MEM(BPF_W, R7, R10, -48), | ||
1794 | BPF_LDX_MEM(BPF_W, R0, R10, -52), | ||
1795 | BPF_ALU32_REG(BPF_SUB, R0, R7), | ||
1796 | BPF_JMP_IMM(BPF_JNE, R0, 0, 2), | ||
1797 | BPF_MOV32_IMM(R0, 256), | ||
1798 | BPF_EXIT_INSN(), | ||
1799 | BPF_MOV32_IMM(R0, 0), | ||
1800 | BPF_EXIT_INSN(), | ||
1801 | }, | ||
1802 | INTERNAL, | ||
1803 | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0x06, 0, 0, | ||
1804 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
1805 | 0x10, 0xbf, 0x48, 0xd6, 0x43, 0xd6}, | ||
1806 | { { 38, 256 } } | ||
1807 | }, | ||
1759 | }; | 1808 | }; |
1760 | 1809 | ||
1761 | static struct net_device dev; | 1810 | static struct net_device dev; |