@@ -83,6 +83,7 @@ struct bpf_test {
83
83
__u32 result ;
84
84
} test [MAX_SUBTESTS ];
85
85
int (* fill_helper )(struct bpf_test * self );
86
+ int expected_errcode ; /* used when FLAG_EXPECTED_FAIL is set in the aux */
86
87
__u8 frag_data [MAX_DATA ];
87
88
};
88
89
@@ -1780,7 +1781,9 @@ static struct bpf_test tests[] = {
1780
1781
},
1781
1782
CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL ,
1782
1783
{ },
1783
- { }
1784
+ { },
1785
+ .fill_helper = NULL ,
1786
+ .expected_errcode = - EINVAL ,
1784
1787
},
1785
1788
{
1786
1789
"check: div_k_0" ,
@@ -1790,7 +1793,9 @@ static struct bpf_test tests[] = {
1790
1793
},
1791
1794
CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL ,
1792
1795
{ },
1793
- { }
1796
+ { },
1797
+ .fill_helper = NULL ,
1798
+ .expected_errcode = - EINVAL ,
1794
1799
},
1795
1800
{
1796
1801
"check: unknown insn" ,
@@ -1801,7 +1806,9 @@ static struct bpf_test tests[] = {
1801
1806
},
1802
1807
CLASSIC | FLAG_EXPECTED_FAIL ,
1803
1808
{ },
1804
- { }
1809
+ { },
1810
+ .fill_helper = NULL ,
1811
+ .expected_errcode = - EINVAL ,
1805
1812
},
1806
1813
{
1807
1814
"check: out of range spill/fill" ,
@@ -1811,7 +1818,9 @@ static struct bpf_test tests[] = {
1811
1818
},
1812
1819
CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL ,
1813
1820
{ },
1814
- { }
1821
+ { },
1822
+ .fill_helper = NULL ,
1823
+ .expected_errcode = - EINVAL ,
1815
1824
},
1816
1825
{
1817
1826
"JUMPS + HOLES" ,
@@ -1903,6 +1912,8 @@ static struct bpf_test tests[] = {
1903
1912
CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL ,
1904
1913
{ },
1905
1914
{ },
1915
+ .fill_helper = NULL ,
1916
+ .expected_errcode = - EINVAL ,
1906
1917
},
1907
1918
{
1908
1919
"check: LDX + RET X" ,
@@ -1913,6 +1924,8 @@ static struct bpf_test tests[] = {
1913
1924
CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL ,
1914
1925
{ },
1915
1926
{ },
1927
+ .fill_helper = NULL ,
1928
+ .expected_errcode = - EINVAL ,
1916
1929
},
1917
1930
{ /* Mainly checking JIT here. */
1918
1931
"M[]: alt STX + LDX" ,
@@ -2087,6 +2100,8 @@ static struct bpf_test tests[] = {
2087
2100
CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL ,
2088
2101
{ },
2089
2102
{ },
2103
+ .fill_helper = NULL ,
2104
+ .expected_errcode = - EINVAL ,
2090
2105
},
2091
2106
{ /* Passes checker but fails during runtime. */
2092
2107
"LD [SKF_AD_OFF-1]" ,
@@ -4462,6 +4477,7 @@ static struct bpf_test tests[] = {
4462
4477
{ },
4463
4478
{ },
4464
4479
.fill_helper = bpf_fill_maxinsns4 ,
4480
+ .expected_errcode = - EINVAL ,
4465
4481
},
4466
4482
{ /* Mainly checking JIT here. */
4467
4483
"BPF_MAXINSNS: Very long jump" ,
@@ -4517,10 +4533,15 @@ static struct bpf_test tests[] = {
4517
4533
{
4518
4534
"BPF_MAXINSNS: Jump, gap, jump, ..." ,
4519
4535
{ },
4536
+ #ifdef CONFIG_BPF_JIT_ALWAYS_ON
4537
+ CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL ,
4538
+ #else
4520
4539
CLASSIC | FLAG_NO_DATA ,
4540
+ #endif
4521
4541
{ },
4522
4542
{ { 0 , 0xababcbac } },
4523
4543
.fill_helper = bpf_fill_maxinsns11 ,
4544
+ .expected_errcode = - ENOTSUPP ,
4524
4545
},
4525
4546
{
4526
4547
"BPF_MAXINSNS: ld_abs+get_processor_id" ,
@@ -5290,7 +5311,7 @@ static struct bpf_prog *generate_filter(int which, int *err)
5290
5311
5291
5312
* err = bpf_prog_create (& fp , & fprog );
5292
5313
if (tests [which ].aux & FLAG_EXPECTED_FAIL ) {
5293
- if (* err == - EINVAL ) {
5314
+ if (* err == tests [ which ]. expected_errcode ) {
5294
5315
pr_cont ("PASS\n" );
5295
5316
/* Verifier rejected filter as expected. */
5296
5317
* err = 0 ;
0 commit comments