test_bpf.sh test in net of ubuntu_kernel_selftests failed on B-4.15 and variants

Bug #1953287 reported by Po-Hsu Lin
258
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ubuntu-kernel-tests
New
Undecided
Unassigned
linux (Ubuntu)
Invalid
Undecided
Unassigned
Bionic
Fix Released
High
Thadeu Lima de Souza Cascardo

Bug Description

[Impact]
A CBPF program jumping over a large number of instructions may lead to kernel code execution.
The test might fail with EINVAL or EOPNOTSUPP, which must be accounted for on different kernel versions.

[Test case]
Load test_bpf module.

[Potential regression]
Some CBPF and EBPF programs might not load.

========================================

Issue found on 4.15.0-1107-ibm-gt with node onibi.

This test failed without any obvious error from the test output, the summary shows there is one failure but all 344 test cases were marked as PASS:
[ 1851.020315] test_bpf: #0 TAX jited:1 46 44 43 PASS
[ 1851.021767] test_bpf: #1 TXA jited:1 43 46 43 PASS
[ 1851.024004] test_bpf: #2 ADD_SUB_MUL_K jited:1 45 PASS
[ 1851.024886] test_bpf: #3 DIV_MOD_KX jited:1 70 PASS
[ 1851.026103] test_bpf: #4 AND_OR_LSH_K jited:1 39 43 PASS
[ 1851.027394] test_bpf: #5 LD_IMM_0 jited:1 42 PASS
[ 1851.028027] test_bpf: #6 LD_IND jited:1 85 85 85 PASS
[ 1851.030687] test_bpf: #7 LD_ABS jited:1 87 85 85 PASS
[ 1851.033343] test_bpf: #8 LD_ABS_LL jited:1 90 70 PASS
[ 1851.035030] test_bpf: #9 LD_IND_LL jited:1 61 58 58 PASS
[ 1851.036890] test_bpf: #10 LD_ABS_NET jited:1 86 70 PASS
[ 1851.038590] test_bpf: #11 LD_IND_NET jited:1 77 56 56 PASS
[ 1851.040573] test_bpf: #12 LD_PKTTYPE jited:1 43 43 PASS
[ 1851.041582] test_bpf: #13 LD_MARK jited:1 41 42 PASS
[ 1851.042494] test_bpf: #14 LD_RXHASH jited:1 42 44 PASS
[ 1851.043436] test_bpf: #15 LD_QUEUE jited:1 43 43 PASS
[ 1851.044379] test_bpf: #16 LD_PROTOCOL jited:1 50 50 PASS
[ 1851.045457] test_bpf: #17 LD_VLAN_TAG jited:1 41 41 PASS
[ 1851.046363] test_bpf: #18 LD_VLAN_TAG_PRESENT jited:1 39 41 PASS
[ 1851.047238] test_bpf: #19 LD_IFINDEX jited:1 44 44 PASS
[ 1851.048199] test_bpf: #20 LD_HATYPE jited:1 44 44 PASS
[ 1851.049157] test_bpf: #21 LD_CPU jited:1 51 50 PASS
[ 1851.050250] test_bpf: #22 LD_NLATTR jited:1 43 68 PASS
[ 1851.051465] test_bpf: #23 LD_NLATTR_NEST jited:1 85 233 PASS
[ 1851.054890] test_bpf: #24 LD_PAYLOAD_OFF jited:1 527 745 PASS
[ 1851.067698] test_bpf: #25 LD_ANC_XOR jited:1 42 42 PASS
[ 1851.069510] test_bpf: #26 SPILL_FILL jited:1 45 45 48 PASS
[ 1851.071372] test_bpf: #27 JEQ jited:1 85 46 47 PASS
[ 1851.073284] test_bpf: #28 JGT jited:1 85 46 49 PASS
[ 1851.075260] test_bpf: #29 JGE (jt 0), test 1 jited:1 86 47 47 PASS
[ 1851.077151] test_bpf: #30 JGE (jt 0), test 2 jited:1 48 45 44 PASS
[ 1851.078613] test_bpf: #31 JGE jited:1 48 46 47 PASS
[ 1851.080128] test_bpf: #32 JSET jited:1 45 44 54 PASS
[ 1851.081667] test_bpf: #33 tcpdump port 22 jited:1 83 106 72 PASS
[ 1851.084383] test_bpf: #34 tcpdump complex jited:1 83 102 93 PASS
[ 1851.087279] test_bpf: #35 RET_A jited:1 41 41 PASS
[ 1851.088195] test_bpf: #36 INT: ADD trivial jited:1 43 PASS
[ 1851.088700] test_bpf: #37 INT: MUL_X jited:1 41 PASS
[ 1851.089186] test_bpf: #38 INT: MUL_X2 jited:1 40 PASS
[ 1851.089665] test_bpf: #39 INT: MUL32_X jited:1 42 PASS
[ 1851.090170] test_bpf: #40 INT: ADD 64-bit jited:1 90 PASS
[ 1851.091228] test_bpf: #41 INT: ADD 32-bit jited:1 91 PASS
[ 1851.092232] test_bpf: #42 INT: SUB jited:1 88 PASS
[ 1851.093260] test_bpf: #43 INT: XOR jited:1 56 PASS
[ 1851.093920] test_bpf: #44 INT: MUL jited:1 194 PASS
[ 1851.095947] test_bpf: #45 MOV REG64 jited:1 43 PASS
[ 1851.096513] test_bpf: #46 MOV REG32 jited:1 45 PASS
[ 1851.097471] test_bpf: #47 LD IMM64 jited:1 44 PASS
[ 1851.098000] test_bpf: #48 INT: ALU MIX jited:1 73 PASS
[ 1851.098807] test_bpf: #49 INT: shifts by register jited:1 53 PASS
[ 1851.099421] test_bpf: #50 INT: DIV + ABS jited:1 92 54 PASS
[ 1851.100960] test_bpf: #51 INT: DIV by -1 jited:1 85 50 PASS
[ 1851.102431] test_bpf: #52 check: missing ret PASS
[ 1851.102650] test_bpf: #53 check: div_k_0 PASS
[ 1851.102660] test_bpf: #54 check: unknown insn PASS
[ 1851.102674] test_bpf: #55 check: out of range spill/fill PASS
[ 1851.102685] test_bpf: #56 JUMPS + HOLES jited:1 55 PASS
[ 1851.103399] test_bpf: #57 check: RET X PASS
[ 1851.103453] test_bpf: #58 check: LDX + RET X PASS
[ 1851.103464] test_bpf: #59 M[]: alt STX + LDX jited:1 105 PASS
[ 1851.104598] test_bpf: #60 M[]: full STX + full LDX jited:1 68 PASS
[ 1851.105426] test_bpf: #61 check: SKF_AD_MAX PASS
[ 1851.105474] test_bpf: #62 LD [SKF_AD_OFF-1] jited:1 72 PASS
[ 1851.106253] test_bpf: #63 load 64-bit immediate jited:1 42 PASS
[ 1851.106748] test_bpf: #64 nmap reduced jited:1 72 PASS
[ 1851.107546] test_bpf: #65 ALU_MOV_X: dst = 2 jited:1 41 PASS
[ 1851.108034] test_bpf: #66 ALU_MOV_X: dst = 4294967295 jited:1 40 PASS
[ 1851.108509] test_bpf: #67 ALU64_MOV_X: dst = 2 jited:1 41 PASS
[ 1851.108991] test_bpf: #68 ALU64_MOV_X: dst = 4294967295 jited:1 40 PASS
[ 1851.109464] test_bpf: #69 ALU_MOV_K: dst = 2 jited:1 41 PASS
[ 1851.109945] test_bpf: #70 ALU_MOV_K: dst = 4294967295 jited:1 40 PASS
[ 1851.110418] test_bpf: #71 ALU_MOV_K: 0x0000ffffffff0000 = 0x00000000ffffffff jited:1 40 PASS
[ 1851.110895] test_bpf: #72 ALU64_MOV_K: dst = 2 jited:1 43 PASS
[ 1851.111398] test_bpf: #73 ALU64_MOV_K: dst = 2147483647 jited:1 41 PASS
[ 1851.111887] test_bpf: #74 ALU64_OR_K: dst = 0x0 jited:1 41 PASS
[ 1851.112372] test_bpf: #75 ALU64_MOV_K: dst = -1 jited:1 39 PASS
[ 1851.112831] test_bpf: #76 ALU_ADD_X: 1 + 2 = 3 jited:1 38 PASS
[ 1851.113280] test_bpf: #77 ALU_ADD_X: 1 + 4294967294 = 4294967295 jited:1 40 PASS
[ 1851.113757] test_bpf: #78 ALU_ADD_X: 2 + 4294967294 = 0 jited:1 40 PASS
[ 1851.114224] test_bpf: #79 ALU64_ADD_X: 1 + 2 = 3 jited:1 41 PASS
[ 1851.114709] test_bpf: #80 ALU64_ADD_X: 1 + 4294967294 = 4294967295 jited:1 43 PASS
[ 1851.115214] test_bpf: #81 ALU64_ADD_X: 2 + 4294967294 = 4294967296 jited:1 40 PASS
[ 1851.115703] test_bpf: #82 ALU_ADD_K: 1 + 2 = 3 jited:1 40 PASS
[ 1851.116178] test_bpf: #83 ALU_ADD_K: 3 + 0 = 3 jited:1 41 PASS
[ 1851.116663] test_bpf: #84 ALU_ADD_K: 1 + 4294967294 = 4294967295 jited:1 40 PASS
[ 1851.117138] test_bpf: #85 ALU_ADD_K: 4294967294 + 2 = 0 jited:1 41 PASS
[ 1851.117629] test_bpf: #86 ALU_ADD_K: 0 + (-1) = 0x00000000ffffffff jited:1 43 PASS
[ 1851.118129] test_bpf: #87 ALU_ADD_K: 0 + 0xffff = 0xffff jited:1 40 PASS
[ 1851.118604] test_bpf: #88 ALU_ADD_K: 0 + 0x7fffffff = 0x7fffffff jited:1 43 PASS
[ 1851.119106] test_bpf: #89 ALU_ADD_K: 0 + 0x80000000 = 0x80000000 jited:1 42 PASS
[ 1851.119635] test_bpf: #90 ALU_ADD_K: 0 + 0x80008000 = 0x80008000 jited:1 42 PASS
[ 1851.120132] test_bpf: #91 ALU64_ADD_K: 1 + 2 = 3 jited:1 40 PASS
[ 1851.120608] test_bpf: #92 ALU64_ADD_K: 3 + 0 = 3 jited:1 40 PASS
[ 1851.121083] test_bpf: #93 ALU64_ADD_K: 1 + 2147483646 = 2147483647 jited:1 41 PASS
[ 1851.121567] test_bpf: #94 ALU64_ADD_K: 4294967294 + 2 = 4294967296 jited:1 40 PASS
[ 1851.122035] test_bpf: #95 ALU64_ADD_K: 2147483646 + -2147483647 = -1 jited:1 40 PASS
[ 1851.122510] test_bpf: #96 ALU64_ADD_K: 1 + 0 = 1 jited:1 40 PASS
[ 1851.122987] test_bpf: #97 ALU64_ADD_K: 0 + (-1) = 0xffffffffffffffff jited:1 42 PASS
[ 1851.123482] test_bpf: #98 ALU64_ADD_K: 0 + 0xffff = 0xffff jited:1 40 PASS
[ 1851.123954] test_bpf: #99 ALU64_ADD_K: 0 + 0x7fffffff = 0x7fffffff jited:1 43 PASS
[ 1851.124457] test_bpf: #100 ALU64_ADD_K: 0 + 0x80000000 = 0xffffffff80000000 jited:1 43 PASS
[ 1851.124959] test_bpf: #101 ALU_ADD_K: 0 + 0x80008000 = 0xffffffff80008000 jited:1 42 PASS
[ 1851.125453] test_bpf: #102 ALU_SUB_X: 3 - 1 = 2 jited:1 41 PASS
[ 1851.125937] test_bpf: #103 ALU_SUB_X: 4294967295 - 4294967294 = 1 jited:1 40 PASS
[ 1851.126413] test_bpf: #104 ALU64_SUB_X: 3 - 1 = 2 jited:1 41 PASS
[ 1851.126896] test_bpf: #105 ALU64_SUB_X: 4294967295 - 4294967294 = 1 jited:1 43 PASS
[ 1851.127394] test_bpf: #106 ALU_SUB_K: 3 - 1 = 2 jited:1 40 PASS
[ 1851.127871] test_bpf: #107 ALU_SUB_K: 3 - 0 = 3 jited:1 41 PASS
[ 1851.128355] test_bpf: #108 ALU_SUB_K: 4294967295 - 4294967294 = 1 jited:1 38 PASS
[ 1851.128805] test_bpf: #109 ALU64_SUB_K: 3 - 1 = 2 jited:1 41 PASS
[ 1851.129289] test_bpf: #110 ALU64_SUB_K: 3 - 0 = 3 jited:1 41 PASS
[ 1851.129772] test_bpf: #111 ALU64_SUB_K: 4294967294 - 4294967295 = -1 jited:1 38 PASS
[ 1851.130221] test_bpf: #112 ALU64_ADD_K: 2147483646 - 2147483647 = -1 jited:1 40 PASS
[ 1851.130696] test_bpf: #113 ALU_MUL_X: 2 * 3 = 6 jited:1 46 PASS
[ 1851.131223] test_bpf: #114 ALU_MUL_X: 2 * 0x7FFFFFF8 = 0xFFFFFFF0 jited:1 44 PASS
[ 1851.131741] test_bpf: #115 ALU_MUL_X: -1 * -1 = 1 jited:1 44 PASS
[ 1851.132278] test_bpf: #116 ALU64_MUL_X: 2 * 3 = 6 jited:1 44 PASS
[ 1851.132789] test_bpf: #117 ALU64_MUL_X: 1 * 2147483647 = 2147483647 jited:1 42 PASS
[ 1851.133281] test_bpf: #118 ALU_MUL_K: 2 * 3 = 6 jited:1 44 PASS
[ 1851.133790] test_bpf: #119 ALU_MUL_K: 3 * 1 = 3 jited:1 44 PASS
[ 1851.134299] test_bpf: #120 ALU_MUL_K: 2 * 0x7FFFFFF8 = 0xFFFFFFF0 jited:1 44 PASS
[ 1851.134815] test_bpf: #121 ALU_MUL_K: 1 * (-1) = 0x00000000ffffffff jited:1 45 PASS
[ 1851.135341] test_bpf: #122 ALU64_MUL_K: 2 * 3 = 6 jited:1 44 PASS
[ 1851.135854] test_bpf: #123 ALU64_MUL_K: 3 * 1 = 3 jited:1 42 PASS
[ 1851.136348] test_bpf: #124 ALU64_MUL_K: 1 * 2147483647 = 2147483647 jited:1 44 PASS
[ 1851.136857] test_bpf: #125 ALU64_MUL_K: 1 * -2147483647 = -2147483647 jited:1 42 PASS
[ 1851.137349] test_bpf: #126 ALU64_MUL_K: 1 * (-1) = 0xffffffffffffffff jited:1 41 PASS
[ 1851.137834] test_bpf: #127 ALU_DIV_X: 6 / 2 = 3 jited:1 45 PASS
[ 1851.138360] test_bpf: #128 ALU_DIV_X: 4294967295 / 4294967295 = 1 jited:1 45 PASS
[ 1851.138878] test_bpf: #129 ALU64_DIV_X: 6 / 2 = 3 jited:1 56 PASS
[ 1851.139514] test_bpf: #130 ALU64_DIV_X: 2147483647 / 2147483647 = 1 jited:1 56 PASS
[ 1851.140142] test_bpf: #131 ALU64_DIV_X: 0xffffffffffffffff / (-1) = 0x0000000000000001 jited:1 62 PASS
[ 1851.140838] test_bpf: #132 ALU_DIV_K: 6 / 2 = 3 jited:1 46 PASS
[ 1851.141384] test_bpf: #133 ALU_DIV_K: 3 / 1 = 3 jited:1 45 PASS
[ 1851.141908] test_bpf: #134 ALU_DIV_K: 4294967295 / 4294967295 = 1 jited:1 45 PASS
[ 1851.142425] test_bpf: #135 ALU_DIV_K: 0xffffffffffffffff / (-1) = 0x1 jited:1 43 PASS
[ 1851.142927] test_bpf: #136 ALU64_DIV_K: 6 / 2 = 3 jited:1 56 PASS
[ 1851.143554] test_bpf: #137 ALU64_DIV_K: 3 / 1 = 3 jited:1 55 PASS
[ 1851.144177] test_bpf: #138 ALU64_DIV_K: 2147483647 / 2147483647 = 1 jited:1 54 PASS
[ 1851.144787] test_bpf: #139 ALU64_DIV_K: 0xffffffffffffffff / (-1) = 0x0000000000000001 jited:1 60 PASS
[ 1851.145456] test_bpf: #140 ALU_MOD_X: 3 % 2 = 1 jited:1 45 PASS
[ 1851.145975] test_bpf: #141 ALU_MOD_X: 4294967295 % 4294967293 = 2 jited:1 45 PASS
[ 1851.146494] test_bpf: #142 ALU64_MOD_X: 3 % 2 = 1 jited:1 56 PASS
[ 1851.147120] test_bpf: #143 ALU64_MOD_X: 2147483647 % 2147483645 = 2 jited:1 55 PASS
[ 1851.147772] test_bpf: #144 ALU_MOD_K: 3 % 2 = 1 jited:1 45 PASS
[ 1851.148291] test_bpf: #145 ALU_MOD_K: 3 % 1 = 0 jited:1 45 PASS
[ 1851.148807] test_bpf: #146 ALU_MOD_K: 4294967295 % 4294967293 = 2 jited:1 45 PASS
[ 1851.149331] test_bpf: #147 ALU64_MOD_K: 3 % 2 = 1 jited:1 54 PASS
[ 1851.149940] test_bpf: #148 ALU64_MOD_K: 3 % 1 = 0 jited:1 54 PASS
[ 1851.150551] test_bpf: #149 ALU64_MOD_K: 2147483647 % 2147483645 = 2 jited:1 56 PASS
[ 1851.151182] test_bpf: #150 ALU_AND_X: 3 & 2 = 2 jited:1 40 PASS
[ 1851.151667] test_bpf: #151 ALU_AND_X: 0xffffffff & 0xffffffff = 0xffffffff jited:1 41 PASS
[ 1851.152152] test_bpf: #152 ALU64_AND_X: 3 & 2 = 2 jited:1 41 PASS
[ 1851.152638] test_bpf: #153 ALU64_AND_X: 0xffffffff & 0xffffffff = 0xffffffff jited:1 41 PASS
[ 1851.153123] test_bpf: #154 ALU_AND_K: 3 & 2 = 2 jited:1 42 PASS
[ 1851.153619] test_bpf: #155 ALU_AND_K: 0xffffffff & 0xffffffff = 0xffffffff jited:1 38 PASS
[ 1851.154076] test_bpf: #156 ALU64_AND_K: 3 & 2 = 2 jited:1 40 PASS
[ 1851.154562] test_bpf: #157 ALU64_AND_K: 0xffffffff & 0xffffffff = 0xffffffff jited:1 41 PASS
[ 1851.155046] test_bpf: #158 ALU64_AND_K: 0x0000ffffffff0000 & 0x0 = 0x0000ffff00000000 jited:1 45 PASS
[ 1851.155567] test_bpf: #159 ALU64_AND_K: 0x0000ffffffff0000 & -1 = 0x0000ffffffffffff jited:1 40 PASS
[ 1851.156050] test_bpf: #160 ALU64_AND_K: 0xffffffffffffffff & -1 = 0xffffffffffffffff jited:1 40 PASS
[ 1851.156529] test_bpf: #161 ALU_OR_X: 1 | 2 = 3 jited:1 40 PASS
[ 1851.157004] test_bpf: #162 ALU_OR_X: 0x0 | 0xffffffff = 0xffffffff jited:1 38 PASS
[ 1851.157454] test_bpf: #163 ALU64_OR_X: 1 | 2 = 3 jited:1 41 PASS
[ 1851.157939] test_bpf: #164 ALU64_OR_X: 0 | 0xffffffff = 0xffffffff jited:1 40 PASS
[ 1851.158419] test_bpf: #165 ALU_OR_K: 1 | 2 = 3 jited:1 41 PASS
[ 1851.158905] test_bpf: #166 ALU_OR_K: 0 & 0xffffffff = 0xffffffff jited:1 43 PASS
[ 1851.159406] test_bpf: #167 ALU64_OR_K: 1 | 2 = 3 jited:1 40 PASS
[ 1851.159889] test_bpf: #168 ALU64_OR_K: 0 & 0xffffffff = 0xffffffff jited:1 41 PASS
[ 1851.160376] test_bpf: #169 ALU64_OR_K: 0x0000ffffffff0000 | 0x0 = 0x0000ffff00000000 jited:1 42 PASS
[ 1851.160870] test_bpf: #170 ALU64_OR_K: 0x0000ffffffff0000 | -1 = 0xffffffffffffffff jited:1 39 PASS
[ 1851.161329] test_bpf: #171 ALU64_OR_K: 0x000000000000000 | -1 = 0xffffffffffffffff jited:1 41 PASS
[ 1851.161811] test_bpf: #172 ALU_XOR_X: 5 ^ 6 = 3 jited:1 41 PASS
[ 1851.162295] test_bpf: #173 ALU_XOR_X: 0x1 ^ 0xffffffff = 0xfffffffe jited:1 42 PASS
[ 1851.162787] test_bpf: #174 ALU64_XOR_X: 5 ^ 6 = 3 jited:1 42 PASS
[ 1851.163278] test_bpf: #175 ALU64_XOR_X: 1 ^ 0xffffffff = 0xfffffffe jited:1 40 PASS
[ 1851.163758] test_bpf: #176 ALU_XOR_K: 5 ^ 6 = 3 jited:1 38 PASS
[ 1851.164210] test_bpf: #177 ALU_XOR_K: 1 ^ 0xffffffff = 0xfffffffe jited:1 40 PASS
[ 1851.164685] test_bpf: #178 ALU64_XOR_K: 5 ^ 6 = 3 jited:1 40 PASS
[ 1851.165161] test_bpf: #179 ALU64_XOR_K: 1 & 0xffffffff = 0xfffffffe jited:1 40 PASS
[ 1851.165636] test_bpf: #180 ALU64_XOR_K: 0x0000ffffffff0000 ^ 0x0 = 0x0000ffffffff0000 jited:1 39 PASS
[ 1851.166096] test_bpf: #181 ALU64_XOR_K: 0x0000ffffffff0000 ^ -1 = 0xffff00000000ffff jited:1 40 PASS
[ 1851.166572] test_bpf: #182 ALU64_XOR_K: 0x000000000000000 ^ -1 = 0xffffffffffffffff jited:1 42 PASS
[ 1851.167064] test_bpf: #183 ALU_LSH_X: 1 << 1 = 2 jited:1 41 PASS
[ 1851.167562] test_bpf: #184 ALU_LSH_X: 1 << 31 = 0x80000000 jited:1 42 PASS
[ 1851.168059] test_bpf: #185 ALU64_LSH_X: 1 << 1 = 2 jited:1 43 PASS
[ 1851.168561] test_bpf: #186 ALU64_LSH_X: 1 << 31 = 0x80000000 jited:1 41 PASS
[ 1851.169045] test_bpf: #187 ALU_LSH_K: 1 << 1 = 2 jited:1 41 PASS
[ 1851.169529] test_bpf: #188 ALU_LSH_K: 1 << 31 = 0x80000000 jited:1 41 PASS
[ 1851.170012] test_bpf: #189 ALU64_LSH_K: 1 << 1 = 2 jited:1 40 PASS
[ 1851.170487] test_bpf: #190 ALU64_LSH_K: 1 << 31 = 0x80000000 jited:1 40 PASS
[ 1851.170962] test_bpf: #191 ALU_RSH_X: 2 >> 1 = 1 jited:1 44 PASS
[ 1851.171476] test_bpf: #192 ALU_RSH_X: 0x80000000 >> 31 = 1 jited:1 42 PASS
[ 1851.171975] test_bpf: #193 ALU64_RSH_X: 2 >> 1 = 1 jited:1 41 PASS
[ 1851.172461] test_bpf: #194 ALU64_RSH_X: 0x80000000 >> 31 = 1 jited:1 42 PASS
[ 1851.172952] test_bpf: #195 ALU_RSH_K: 2 >> 1 = 1 jited:1 40 PASS
[ 1851.173428] test_bpf: #196 ALU_RSH_K: 0x80000000 >> 31 = 1 jited:1 41 PASS
[ 1851.173915] test_bpf: #197 ALU64_RSH_K: 2 >> 1 = 1 jited:1 40 PASS
[ 1851.174391] test_bpf: #198 ALU64_RSH_K: 0x80000000 >> 31 = 1 jited:1 38 PASS
[ 1851.174841] test_bpf: #199 ALU_ARSH_X: 0xff00ff0000000000 >> 40 = 0xffffffffffff00ff jited:1 44 PASS
[ 1851.175355] test_bpf: #200 ALU_ARSH_K: 0xff00ff0000000000 >> 40 = 0xffffffffffff00ff jited:1 42 PASS
[ 1851.175854] test_bpf: #201 ALU_NEG: -(3) = -3 jited:1 41 PASS
[ 1851.176340] test_bpf: #202 ALU_NEG: -(-3) = 3 jited:1 40 PASS
[ 1851.176815] test_bpf: #203 ALU64_NEG: -(3) = -3 jited:1 41 PASS
[ 1851.177298] test_bpf: #204 ALU64_NEG: -(-3) = 3 jited:1 40 PASS
[ 1851.177773] test_bpf: #205 ALU_END_FROM_BE 16: 0x0123456789abcdef -> 0xcdef jited:1 42 PASS
[ 1851.178264] test_bpf: #206 ALU_END_FROM_BE 32: 0x0123456789abcdef -> 0x89abcdef jited:1 40 PASS
[ 1851.178740] test_bpf: #207 ALU_END_FROM_BE 64: 0x0123456789abcdef -> 0x89abcdef jited:1 43 PASS
[ 1851.179238] test_bpf: #208 ALU_END_FROM_LE 16: 0x0123456789abcdef -> 0xefcd jited:1 38 PASS
[ 1851.179703] test_bpf: #209 ALU_END_FROM_LE 32: 0x0123456789abcdef -> 0xefcdab89 jited:1 41 PASS
[ 1851.180189] test_bpf: #210 ALU_END_FROM_LE 64: 0x0123456789abcdef -> 0x67452301 jited:1 40 PASS
[ 1851.180665] test_bpf: #211 ST_MEM_B: Store/Load byte: max negative jited:1 41 PASS
[ 1851.181149] test_bpf: #212 ST_MEM_B: Store/Load byte: max positive jited:1 41 PASS
[ 1851.181632] test_bpf: #213 STX_MEM_B: Store/Load byte: max negative jited:1 43 PASS
[ 1851.182133] test_bpf: #214 ST_MEM_H: Store/Load half word: max negative jited:1 41 PASS
[ 1851.182616] test_bpf: #215 ST_MEM_H: Store/Load half word: max positive jited:1 42 PASS
[ 1851.183107] test_bpf: #216 STX_MEM_H: Store/Load half word: max negative jited:1 42 PASS
[ 1851.183625] test_bpf: #217 ST_MEM_W: Store/Load word: max negative jited:1 42 PASS
[ 1851.184121] test_bpf: #218 ST_MEM_W: Store/Load word: max positive jited:1 41 PASS
[ 1851.184606] test_bpf: #219 STX_MEM_W: Store/Load word: max negative jited:1 42 PASS
[ 1851.185099] test_bpf: #220 ST_MEM_DW: Store/Load double word: max negative jited:1 40 PASS
[ 1851.185576] test_bpf: #221 ST_MEM_DW: Store/Load double word: max negative 2 jited:1 43 PASS
[ 1851.186079] test_bpf: #222 ST_MEM_DW: Store/Load double word: max positive jited:1 42 PASS
[ 1851.186570] test_bpf: #223 STX_MEM_DW: Store/Load double word: max negative jited:1 42 PASS
[ 1851.187062] test_bpf: #224 STX_XADD_W: Test: 0x12 + 0x10 = 0x22 jited:1 43 PASS
[ 1851.187592] test_bpf: #225 STX_XADD_W: Test side-effects, r10: 0x12 + 0x10 = 0x22 jited:1 42 PASS
[ 1851.188092] test_bpf: #226 STX_XADD_W: Test side-effects, r0: 0x12 + 0x10 = 0x22 jited:1 39 PASS
[ 1851.188551] test_bpf: #227 STX_XADD_W: X + 1 + 1 + 1 + ... jited:1 70324 PASS
[ 1851.892368] test_bpf: #228 STX_XADD_DW: Test: 0x12 + 0x10 = 0x22 jited:1 39 PASS
[ 1851.893015] test_bpf: #229 STX_XADD_DW: Test side-effects, r10: 0x12 + 0x10 = 0x22 jited:1 40 PASS
[ 1851.893895] test_bpf: #230 STX_XADD_DW: Test side-effects, r0: 0x12 + 0x10 = 0x22 jited:1 37 PASS
[ 1851.894450] test_bpf: #231 STX_XADD_DW: X + 1 + 1 + 1 + ... jited:1 70316 PASS
[ 1852.598334] test_bpf: #232 JMP_EXIT jited:1 40 PASS
[ 1852.598951] test_bpf: #233 JMP_JA: Unconditional jump: if (true) return 1 jited:1 42 PASS
[ 1852.599535] test_bpf: #234 JMP_JSLT_K: Signed jump: if (-2 < -1) return 1 jited:1 39 PASS
[ 1852.600002] test_bpf: #235 JMP_JSLT_K: Signed jump: if (-1 < -1) return 0 jited:1 38 PASS
[ 1852.600454] test_bpf: #236 JMP_JSGT_K: Signed jump: if (-1 > -2) return 1 jited:1 39 PASS
[ 1852.600913] test_bpf: #237 JMP_JSGT_K: Signed jump: if (-1 > -1) return 0 jited:1 40 PASS
[ 1852.601388] test_bpf: #238 JMP_JSLE_K: Signed jump: if (-2 <= -1) return 1 jited:1 39 PASS
[ 1852.601847] test_bpf: #239 JMP_JSLE_K: Signed jump: if (-1 <= -1) return 1 jited:1 40 PASS
[ 1852.602323] test_bpf: #240 JMP_JSLE_K: Signed jump: value walk 1 jited:1 40 PASS
[ 1852.602800] test_bpf: #241 JMP_JSLE_K: Signed jump: value walk 2 jited:1 42 PASS
[ 1852.603296] test_bpf: #242 JMP_JSGE_K: Signed jump: if (-1 >= -2) return 1 jited:1 42 PASS
[ 1852.603794] test_bpf: #243 JMP_JSGE_K: Signed jump: if (-1 >= -1) return 1 jited:1 40 PASS
[ 1852.604267] test_bpf: #244 JMP_JSGE_K: Signed jump: value walk 1 jited:1 40 PASS
[ 1852.604745] test_bpf: #245 JMP_JSGE_K: Signed jump: value walk 2 jited:1 40 PASS
[ 1852.605222] test_bpf: #246 JMP_JGT_K: if (3 > 2) return 1 jited:1 42 PASS
[ 1852.605715] test_bpf: #247 JMP_JGT_K: Unsigned jump: if (-1 > 1) return 1 jited:1 42 PASS
[ 1852.606208] test_bpf: #248 JMP_JLT_K: if (2 < 3) return 1 jited:1 42 PASS
[ 1852.606700] test_bpf: #249 JMP_JGT_K: Unsigned jump: if (1 < -1) return 1 jited:1 44 PASS
[ 1852.607210] test_bpf: #250 JMP_JGE_K: if (3 >= 2) return 1 jited:1 39 PASS
[ 1852.607675] test_bpf: #251 JMP_JLE_K: if (2 <= 3) return 1 jited:1 42 PASS
[ 1852.608170] test_bpf: #252 JMP_JGT_K: if (3 > 2) return 1 (jump backwards) jited:1 42 PASS
[ 1852.608662] test_bpf: #253 JMP_JGE_K: if (3 >= 3) return 1 jited:1 40 PASS
[ 1852.609129] test_bpf: #254 JMP_JGT_K: if (2 < 3) return 1 (jump backwards) jited:1 40 PASS
[ 1852.609597] test_bpf: #255 JMP_JLE_K: if (3 <= 3) return 1 jited:1 40 PASS
[ 1852.610065] test_bpf: #256 JMP_JNE_K: if (3 != 2) return 1 jited:1 40 PASS
[ 1852.610540] test_bpf: #257 JMP_JEQ_K: if (3 == 3) return 1 jited:1 39 PASS
[ 1852.611001] test_bpf: #258 JMP_JSET_K: if (0x3 & 0x2) return 1 jited:1 44 PASS
[ 1852.611510] test_bpf: #259 JMP_JSET_K: if (0x3 & 0xffffffff) return 1 jited:1 42 PASS
[ 1852.612007] test_bpf: #260 JMP_JSGT_X: Signed jump: if (-1 > -2) return 1 jited:1 43 PASS
[ 1852.612509] test_bpf: #261 JMP_JSGT_X: Signed jump: if (-1 > -1) return 0 jited:1 41 PASS
[ 1852.612993] test_bpf: #262 JMP_JSLT_X: Signed jump: if (-2 < -1) return 1 jited:1 42 PASS
[ 1852.613485] test_bpf: #263 JMP_JSLT_X: Signed jump: if (-1 < -1) return 0 jited:1 40 PASS
[ 1852.613960] test_bpf: #264 JMP_JSGE_X: Signed jump: if (-1 >= -2) return 1 jited:1 40 PASS
[ 1852.614437] test_bpf: #265 JMP_JSGE_X: Signed jump: if (-1 >= -1) return 1 jited:1 42 PASS
[ 1852.614929] test_bpf: #266 JMP_JSLE_X: Signed jump: if (-2 <= -1) return 1 jited:1 41 PASS
[ 1852.615413] test_bpf: #267 JMP_JSLE_X: Signed jump: if (-1 <= -1) return 1 jited:1 40 PASS
[ 1852.615884] test_bpf: #268 JMP_JGT_X: if (3 > 2) return 1 jited:1 40 PASS
[ 1852.616362] test_bpf: #269 JMP_JGT_X: Unsigned jump: if (-1 > 1) return 1 jited:1 42 PASS
[ 1852.616854] test_bpf: #270 JMP_JLT_X: if (2 < 3) return 1 jited:1 41 PASS
[ 1852.617339] test_bpf: #271 JMP_JLT_X: Unsigned jump: if (1 < -1) return 1 jited:1 40 PASS
[ 1852.617808] test_bpf: #272 JMP_JGE_X: if (3 >= 2) return 1 jited:1 40 PASS
[ 1852.618276] test_bpf: #273 JMP_JGE_X: if (3 >= 3) return 1 jited:1 41 PASS
[ 1852.618759] test_bpf: #274 JMP_JLE_X: if (2 <= 3) return 1 jited:1 45 PASS
[ 1852.619277] test_bpf: #275 JMP_JLE_X: if (3 <= 3) return 1 jited:1 42 PASS
[ 1852.619773] test_bpf: #276 JMP_JGE_X: ldimm64 test 1 jited:1 39 PASS
[ 1852.620233] test_bpf: #277 JMP_JGE_X: ldimm64 test 2 jited:1 39 PASS
[ 1852.620693] test_bpf: #278 JMP_JGE_X: ldimm64 test 3 jited:1 40 PASS
[ 1852.621160] test_bpf: #279 JMP_JLE_X: ldimm64 test 1 jited:1 42 PASS
[ 1852.621653] test_bpf: #280 JMP_JLE_X: ldimm64 test 2 jited:1 39 PASS
[ 1852.622112] test_bpf: #281 JMP_JLE_X: ldimm64 test 3 jited:1 41 PASS
[ 1852.622596] test_bpf: #282 JMP_JNE_X: if (3 != 2) return 1 jited:1 42 PASS
[ 1852.623089] test_bpf: #283 JMP_JEQ_X: if (3 == 3) return 1 jited:1 42 PASS
[ 1852.623755] test_bpf: #284 JMP_JSET_X: if (0x3 & 0x2) return 1 jited:1 42 PASS
[ 1852.624254] test_bpf: #285 JMP_JSET_X: if (0x3 & 0xffffffff) return 1 jited:1 40 PASS
[ 1852.624725] test_bpf: #286 JMP_JA: Jump, gap, jump, ... jited:1 40 PASS
[ 1852.625212] test_bpf: #287 BPF_MAXINSNS: Maximum possible literals jited:1 38 PASS
[ 1852.627618] test_bpf: #288 BPF_MAXINSNS: Single literal jited:1 40 PASS
[ 1852.630316] test_bpf: #289 BPF_MAXINSNS: Run/add until end jited:1 3543 PASS
[ 1852.667687] test_bpf: #290 BPF_MAXINSNS: Too many instructions PASS
[ 1852.667689] test_bpf: #291 BPF_MAXINSNS: Very long jump jited:1 39 PASS
[ 1852.670791] test_bpf: #292 BPF_MAXINSNS: Ctx heavy transformations jited:1 6062 6093 PASS
[ 1852.795464] test_bpf: #293 BPF_MAXINSNS: Call heavy transformations jited:1 46133 44901 PASS
[ 1853.709272] test_bpf: #294 BPF_MAXINSNS: Jump heavy test jited:1 6655 PASS
[ 1853.779628] test_bpf: #295 BPF_MAXINSNS: Very long jump backwards jited:1 39 PASS
[ 1853.781411] test_bpf: #296 BPF_MAXINSNS: Edge hopping nuthouse jited:1 29305 PASS
[ 1854.076013] test_bpf: #297 BPF_MAXINSNS: Jump, gap, jump, ... PASS
[ 1854.079459] test_bpf: #298 BPF_MAXINSNS: jump over MSH UNEXPECTED_PASS
[ 1854.084214] test_bpf: #299 BPF_MAXINSNS: exec all MSH jited:1 51171 PASS
[ 1854.600388] test_bpf: #300 BPF_MAXINSNS: ld_abs+get_processor_id jited:1 61131 PASS
[ 1855.215661] test_bpf: #301 BPF_MAXINSNS: ld_abs+vlan_push/pop jited:1 53623 PASS
[ 1855.753211] test_bpf: #302 BPF_MAXINSNS: jump around ld_abs jited:1 46 PASS
[ 1855.755194] test_bpf: #303 LD_IND byte frag jited:1 117 PASS
[ 1855.756471] test_bpf: #304 LD_IND halfword frag jited:1 116 PASS
[ 1855.758215] test_bpf: #305 LD_IND word frag jited:1 174 PASS
[ 1855.760545] test_bpf: #306 LD_IND halfword mixed head/frag jited:1 155 PASS
[ 1855.762192] test_bpf: #307 LD_IND word mixed head/frag jited:1 157 PASS
[ 1855.763832] test_bpf: #308 LD_ABS byte frag jited:1 117 PASS
[ 1855.765076] test_bpf: #309 LD_ABS halfword frag jited:1 116 PASS
[ 1855.766308] test_bpf: #310 LD_ABS word frag jited:1 173 PASS
[ 1855.768118] test_bpf: #311 LD_ABS halfword mixed head/frag jited:1 153 PASS
[ 1855.769730] test_bpf: #312 LD_ABS word mixed head/frag jited:1 156 PASS
[ 1855.771361] test_bpf: #313 LD_IND byte default X jited:1 39 PASS
[ 1855.771827] test_bpf: #314 LD_IND byte positive offset jited:1 42 PASS
[ 1855.772321] test_bpf: #315 LD_IND byte negative offset jited:1 41 PASS
[ 1855.772807] test_bpf: #316 LD_IND halfword positive offset jited:1 42 PASS
[ 1855.773302] test_bpf: #317 LD_IND halfword negative offset jited:1 42 PASS
[ 1855.773795] test_bpf: #318 LD_IND halfword unaligned jited:1 43 PASS
[ 1855.774298] test_bpf: #319 LD_IND word positive offset jited:1 40 PASS
[ 1855.774767] test_bpf: #320 LD_IND word negative offset jited:1 43 PASS
[ 1855.775270] test_bpf: #321 LD_IND word unaligned (addr & 3 == 2) jited:1 40 PASS
[ 1855.775746] test_bpf: #322 LD_IND word unaligned (addr & 3 == 1) jited:1 42 PASS
[ 1855.776242] test_bpf: #323 LD_IND word unaligned (addr & 3 == 3) jited:1 42 PASS
[ 1855.776737] test_bpf: #324 LD_ABS byte jited:1 40 PASS
[ 1855.777215] test_bpf: #325 LD_ABS halfword jited:1 40 PASS
[ 1855.777685] test_bpf: #326 LD_ABS halfword unaligned jited:1 40 PASS
[ 1855.778162] test_bpf: #327 LD_ABS word jited:1 39 PASS
[ 1855.778623] test_bpf: #328 LD_ABS word unaligned (addr & 3 == 2) jited:1 41 PASS
[ 1855.779111] test_bpf: #329 LD_ABS word unaligned (addr & 3 == 1) jited:1 40 PASS
[ 1855.779589] test_bpf: #330 LD_ABS word unaligned (addr & 3 == 3) jited:1 40 PASS
[ 1855.780060] test_bpf: #331 ADD default X jited:1 38 PASS
[ 1855.780514] test_bpf: #332 ADD default A jited:1 37 PASS
[ 1855.780957] test_bpf: #333 SUB default X jited:1 38 PASS
[ 1855.781408] test_bpf: #334 SUB default A jited:1 37 PASS
[ 1855.781852] test_bpf: #335 MUL default X jited:1 42 PASS
[ 1855.782345] test_bpf: #336 MUL default A jited:1 42 PASS
[ 1855.782839] test_bpf: #337 DIV default X jited:1 42 PASS
[ 1855.783338] test_bpf: #338 DIV default A jited:1 41 PASS
[ 1855.783830] test_bpf: #339 MOD default X jited:1 39 PASS
[ 1855.784294] test_bpf: #340 MOD default A jited:1 41 PASS
[ 1855.784779] test_bpf: #341 JMP EQ default A jited:1 36 PASS
[ 1855.785215] test_bpf: #342 JMP EQ default X jited:1 40 PASS
[ 1855.785692] test_bpf: #343 LD_ABS with helper changing skb data jited:1 191 PASS
[ 1855.787683] test_bpf: Summary: 343 PASSED, 1 FAILED, [334/334 JIT'ed]

This issue does not exist on this node with bionic 4.15 (note that there are only 342 tests in B-4.15), the new test cases in b-ibm-4.15 are:
  test_bpf: #301 BPF_MAXINSNS: ld_abs+vlan_push/pop jited:1 53623 PASS
  test_bpf: #302 BPF_MAXINSNS: jump around ld_abs jited:1 46 PASS

CVE References

Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Please find attachment for B-4.15 test output

tags: added: 4.15 bionic ibm-gt sru-20211129 ubuntu-kernel-selftests
Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Note that the B-4.15 kernel above is 4.15.0-163

Revision history for this message
Thadeu Lima de Souza Cascardo (cascardo) wrote :

Hey, Sam.

This is because of the UNEXPECTED_PASS because of the MSH test. It is not a regression, but an old bug that a new test puts into light.

I am already working on it. Please, keep this bug private for now.

Cascardo.

Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Thanks Cascardo!
I can reproduce this with 4.15.0-165 as well.

Po-Hsu Lin (cypressyew)
summary: - test_bpf.sh test in net of ubuntu_kernel_selftests failed on B-ibm-gt
+ test_bpf.sh test in net of ubuntu_kernel_selftests failed on B-4.15 and
+ variants
Revision history for this message
Thadeu Lima de Souza Cascardo (cascardo) wrote :

This is the CVE reported for this issue:

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-25020

The fix is this upstream commit, which I have backported to bionic, and will submit after running one extra test.

https://github.com/torvalds/linux/commit/050fad7c4534c13c8eb1d9c2ba66012e014773cb

Thanks.
Cascardo.

information type: Private → Public Security
Changed in linux (Ubuntu):
status: New → Invalid
Changed in linux (Ubuntu Bionic):
status: New → In Progress
assignee: nobody → Thadeu Lima de Souza Cascardo (cascardo)
importance: Undecided → High
description: updated
Changed in linux (Ubuntu Bionic):
status: In Progress → Fix Committed
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote :

This bug is awaiting verification that the linux/4.15.0-166.174 kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-bionic' to 'verification-done-bionic'. If the problem still exists, change the tag 'verification-needed-bionic' to 'verification-failed-bionic'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-bionic
Revision history for this message
Po-Hsu Lin (cypressyew) wrote :

Passed on Bionic 4.15.0-166.174
[ 890.386448] test_bpf: Summary: 342 PASSED, 0 FAILED, [333/333 JIT'ed]
16457 16:29:03 INFO | GOOD ubuntu_kernel_selftests.net:test_bpf.sh

Thanks

tags: added: verification-done-bionic
removed: verification-needed-bionic
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (10.4 KiB)

This bug was fixed in the package linux - 4.15.0-166.174

---------------
linux (4.15.0-166.174) bionic; urgency=medium

  * bionic/linux: 4.15.0-166.174 -proposed tracker (LP: #1953667)

  * Ubuntu version macros overflow with high ABI numbers (LP: #1953522)
    - SAUCE: Revert "stable: clamp SUBLEVEL in 4.14"

  * test_bpf.sh test in net of ubuntu_kernel_selftests failed on B-4.15 and
    variants (LP: #1953287)
    - SAUCE: Revert "bpf: add also cbpf long jump test cases with heavy expansion"

  * test_bpf.sh test in net of ubuntu_kernel_selftests failed on B-4.15 and
    variants (LP: #1953287) // CVE-2018-25020
    - bpf: fix truncated jump targets on heavy expansions

linux (4.15.0-165.173) bionic; urgency=medium

  * bionic/linux: 4.15.0-165.173 -proposed tracker (LP: #1952780)

  * Support builtin revoked certificates (LP: #1932029)
    - certs: Add EFI_CERT_X509_GUID support for dbx entries
    - certs: Move load_system_certificate_list to a common function
    - integrity: Move import of MokListRT certs to a separate routine
    - integrity: Load certs from the EFI MOK config table
    - certs: Add ability to preload revocation certs
    - certs: add 'x509_revocation_list' to gitignore
    - SAUCE: Dump stack when X.509 certificates cannot be loaded
    - [Packaging] build canonical-revoked-certs.pem from branch/arch certs
    - [Packaging] Revoke 2012 UEFI signing certificate as built-in
    - [Config] Configure CONFIG_SYSTEM_REVOCATION_KEYS with revoked keys

  * Support importing mokx keys into revocation list from the mok table
    (LP: #1928679)
    - efi: Support for MOK variable config table
    - efi: mokvar-table: fix some issues in new code
    - efi: mokvar: add missing include of asm/early_ioremap.h
    - efi/mokvar: Reserve the table only if it is in boot services data
    - SAUCE: integrity: Load mokx certs from the EFI MOK config table
    - SAUCE: integrity: add informational messages when revoking certs

  * CVE-2021-4002
    - arm64: tlb: Provide forward declaration of tlb_flush() before including
      tlb.h
    - mm: mmu_notifier fix for tlb_end_vma
    - hugetlbfs: flush TLBs correctly after huge_pmd_unshare

linux (4.15.0-164.172) bionic; urgency=medium

  * bionic/linux: 4.15.0-164.172 -proposed tracker (LP: #1952348)

  * Packaging resync (LP: #1786013)
    - [Packaging] resync update-dkms-versions helper
    - debian/dkms-versions -- update from kernel-versions (main/2021.11.29)

  * Bionic update: upstream stable patchset 2021-11-23 (LP: #1951997)
    - btrfs: always wait on ordered extents at fsync time
    - ARM: dts: at91: sama5d2_som1_ek: disable ISC node by default
    - xtensa: xtfpga: use CONFIG_USE_OF instead of CONFIG_OF
    - xtensa: xtfpga: Try software restart before simulating CPU reset
    - NFSD: Keep existing listeners on portlist error
    - netfilter: ipvs: make global sysctl readonly in non-init netns
    - NIOS2: irqflags: rename a redefined register name
    - can: rcar_can: fix suspend/resume
    - can: peak_usb: pcan_usb_fd_decode_status(): fix back to ERROR_ACTIVE state
      notification
    - can: peak_pci: peak_pci_remove(): fix UAF
    - ocfs2: fix data corruption after conversio...

Changed in linux (Ubuntu Bionic):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public Security information  
Everyone can see this security related information.

Other bug subscribers

Bug attachments

Remote bug watches

Bug watches keep track of this bug in other bug trackers.