This bug is awaiting verification that the linux/4.15.0-190.201 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

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1980648

Title:
  unprivileged tests in test_verifier from ubuntu_bpf failed with
  "Failed to load prog 'Operation not permitted'" on B-4.15

Status in ubuntu-kernel-tests:
  In Progress
Status in linux package in Ubuntu:
  Fix Released
Status in linux source package in Bionic:
  Fix Committed

Bug description:
  [Impact]
  We have kernel.unprivileged_bpf_disabled enabled for Bionic kernel:
  $ sysctl kernel.unprivileged_bpf_disabled
  kernel.unprivileged_bpf_disabled = 2

  This causes all unprivileged tests in test_verifier of bpf selftests
  to fail like:
    #0/u add+sub+mul FAIL
    Failed to load prog 'Operation not permitted'!

  Because it permanently disables unprivileged BPF access for
  the currently running kernel.

  [Fix]
  * d0a0e4956f ("selftests/bpf: Count tests skipped by unpriv")
  * 0a67487403 ("selftests/bpf: Only run tests if !bpf_disabled")

  These two patches can be cherry-picked into our Bionic kernel.

  Note that there is a follow-up fix for 0a67487403, which is commit
  deea81228b ("selftests/bpf: check return value of fopen in
  test_verifier.c"), but this is intended for older kernels (< 4.4) thus
  I will leave it alone.

  [Test]
  Patch tested with Bionic 4.15.0-188, and these unprivileged won't fail
  with "Failed to load prog 'Operation not permitted'!" anymore, they
  will be marked as skipped tests.

  Overall test result improves from:
    Summary: 551 PASSED, 286 FAILED
  To:
    Summary: 551 PASSED, 278 SKIPPED, 8 FAILED

  [Where problems could occur]
  Change limited to the bpf selftest code, no actual changes to kernel
  function. If this fix is wrong, we might get incorrect test results.

  [Original Bug Report]
  Issue found on Bionic 4.15 cloud variants (as we don't run this test on 
bare-metals)

   #0/u add+sub+mul FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #1/u DIV32 by 0, zero check 1 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #2/u DIV32 by 0, zero check 2 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #3/u DIV64 by 0, zero check FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #4/u MOD32 by 0, zero check 1 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #5/u MOD32 by 0, zero check 2 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #6/u MOD64 by 0, zero check FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #36/u test6 ld_imm64 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #37/u test7 ld_imm64 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #46/u arsh64 on imm FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #47/u arsh64 on reg FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #60/u uninitialized stack1 Failed to create hash map 'Operation not 
permitted'!
  --
   #63/u non-invalid fp arithmetic FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #67/u check valid spill/fill, skb mark FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #81/u don't check return value before access Failed to create hash map 
'Operation not permitted'!
  --
   #82/u access memory with incorrect alignment Failed to create hash map 
'Operation not permitted'!
  --
   #83/u sometimes access memory with incorrect alignment Failed to create hash 
map 'Operation not permitted'!
  --
   #86/u jump test 3 Failed to create hash map 'Operation not permitted'!
  --
   #89/u access skb fields ok FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #91/u access skb fields bad2 Failed to create hash map 'Operation not 
permitted'!
  --
   #92/u access skb fields bad3 Failed to create hash map 'Operation not 
permitted'!
  --
   #93/u access skb fields bad4 Failed to create hash map 'Operation not 
permitted'!
  --
   #118/u check cb access: byte FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #121/u check skb->hash byte load permitted FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #126/u check cb access: half FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #130/u check skb->hash half load permitted FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #133/u check cb access: word FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #138/u check cb access: double FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #149/u PTR_TO_STACK store/load FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #155/u unpriv: add const to pointer FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #161/u unpriv: pass pointer to helper function Failed to create hash map 
'Operation not permitted'!
  --
   #162/u unpriv: indirectly pass pointer on stack to helper function Failed to 
create hash map 'Operation not permitted'!
  --
   #167/u unpriv: spill/fill of ctx FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #173/u unpriv: write pointer into map elem value Failed to create hash map 
'Operation not permitted'!
  --
   #174/u alu32: mov u32 const FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #176/u unpriv: pass pointer to tail_call Failed to create prog array 
'Operation not permitted'!
  --
   #177/u unpriv: cmp map pointer with zero Failed to create hash map 
'Operation not permitted'!
  --
   #184/u runtime/jit: pass negative index to tail_call Failed to create prog 
array 'Operation not permitted'!
   FAIL
   Failed to load prog 'Operation not permitted'!
   #185/u runtime/jit: pass > 32bit index to tail_call Failed to create prog 
array 'Operation not permitted'!
   FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #186/u PTR_TO_STACK check high 1 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #187/u PTR_TO_STACK check high 2 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #193/u PTR_TO_STACK check low 1 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #200/u PTR_TO_STACK mixed reg/k, 1 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #201/u PTR_TO_STACK mixed reg/k, 2 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #202/u PTR_TO_STACK mixed reg/k, 3 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #203/u PTR_TO_STACK reg FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #204/u stack pointer arithmetic FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #273/u valid map access into an array with a constant Failed to create hash 
map 'Operation not permitted'!
  --
   #274/u valid map access into an array with a register Failed to create hash 
map 'Operation not permitted'!
  --
   #275/u valid map access into an array with a variable Failed to create hash 
map 'Operation not permitted'!
  --
   #276/u valid map access into an array with a signed variable Failed to 
create hash map 'Operation not permitted'!
  --
   #277/u invalid map access into an array with a constant Failed to create 
hash map 'Operation not permitted'!
  --
   #278/u invalid map access into an array with a register Failed to create 
hash map 'Operation not permitted'!
  --
   #279/u invalid map access into an array with a variable Failed to create 
hash map 'Operation not permitted'!
  --
   #280/u invalid map access into an array with no floor check Failed to create 
hash map 'Operation not permitted'!
  --
   #281/u invalid map access into an array with a invalid max check Failed to 
create hash map 'Operation not permitted'!
  --
   #282/u invalid map access into an array with a invalid max check Failed to 
create hash map 'Operation not permitted'!
  --
   #289/u invalid map access from else condition Failed to create hash map 
'Operation not permitted'!
  --
   #305/u leak pointer into ctx 1 Failed to create hash map 'Operation not 
permitted'!
  --
   #307/u leak pointer into ctx 3 Failed to create hash map 'Operation not 
permitted'!
  --
   #308/u leak pointer into map val Failed to create hash map 'Operation not 
permitted'!
  --
   #341/u map element value is preserved across register spilling Failed to 
create hash map 'Operation not permitted'!
  --
   #342/u map element value or null is marked on register spilling Failed to 
create hash map 'Operation not permitted'!
  --
   #343/u map element value store of cleared call register Failed to create 
hash map 'Operation not permitted'!
  --
   #344/u map element value with unaligned store Failed to create hash map 
'Operation not permitted'!
  --
   #345/u map element value with unaligned load Failed to create hash map 
'Operation not permitted'!
  --
   #346/u map element value illegal alu op, 1 Failed to create hash map 
'Operation not permitted'!
  --
   #347/u map element value illegal alu op, 2 Failed to create hash map 
'Operation not permitted'!
  --
   #348/u map element value illegal alu op, 3 Failed to create hash map 
'Operation not permitted'!
  --
   #349/u map element value illegal alu op, 4 Failed to create hash map 
'Operation not permitted'!
  --
   #350/u map element value illegal alu op, 5 Failed to create hash map 
'Operation not permitted'!
  --
   #351/u map element value is preserved across register spilling Failed to 
create hash map 'Operation not permitted'!
  --
   #381/u invalid and of negative number Failed to create hash map 'Operation 
not permitted'!
  --
   #382/u invalid range check Failed to create hash map 'Operation not 
permitted'!
  --
   #383/u map in map access Failed to create array 'Operation not permitted'!
   FAIL
   Failed to load prog 'Operation not permitted'!
   #384/u invalid inner map pointer Failed to create array 'Operation not 
permitted'!
  --
   #385/u forgot null checking on the inner map pointer Failed to create array 
'Operation not permitted'!
  --
   #391/u ld_abs: check calling conv, r7 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #398/u ld_ind: check calling conv, r7 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #405/u bounds checks mixing signed and unsigned, positive bounds Failed to 
create hash map 'Operation not permitted'!
  --
   #406/u bounds checks mixing signed and unsigned Failed to create hash map 
'Operation not permitted'!
  --
   #407/u bounds checks mixing signed and unsigned, variant 2 Failed to create 
hash map 'Operation not permitted'!
  --
   #408/u bounds checks mixing signed and unsigned, variant 3 Failed to create 
hash map 'Operation not permitted'!
  --
   #409/u bounds checks mixing signed and unsigned, variant 4 Failed to create 
hash map 'Operation not permitted'!
   FAIL
   Failed to load prog 'Operation not permitted'!
   #410/u bounds checks mixing signed and unsigned, variant 5 Failed to create 
hash map 'Operation not permitted'!
  --
   #412/u bounds checks mixing signed and unsigned, variant 7 Failed to create 
hash map 'Operation not permitted'!
   FAIL
   Failed to load prog 'Operation not permitted'!
   #413/u bounds checks mixing signed and unsigned, variant 8 Failed to create 
hash map 'Operation not permitted'!
  --
   #414/u bounds checks mixing signed and unsigned, variant 9 Failed to create 
hash map 'Operation not permitted'!
   FAIL
   Failed to load prog 'Operation not permitted'!
   #415/u bounds checks mixing signed and unsigned, variant 10 Failed to create 
hash map 'Operation not permitted'!
  --
   #416/u bounds checks mixing signed and unsigned, variant 11 Failed to create 
hash map 'Operation not permitted'!
  --
   #417/u bounds checks mixing signed and unsigned, variant 12 Failed to create 
hash map 'Operation not permitted'!
  --
   #418/u bounds checks mixing signed and unsigned, variant 13 Failed to create 
hash map 'Operation not permitted'!
  --
   #419/u bounds checks mixing signed and unsigned, variant 14 Failed to create 
hash map 'Operation not permitted'!
  --
   #420/u bounds checks mixing signed and unsigned, variant 15 Failed to create 
hash map 'Operation not permitted'!
  --
   #421/u subtraction bounds (map value) variant 1 Failed to create hash map 
'Operation not permitted'!
  --
   #422/u subtraction bounds (map value) variant 2 Failed to create hash map 
'Operation not permitted'!
  --
   #423/u check subtraction on pointers for unpriv Failed to create hash map 
'Operation not permitted'!
  --
   #424/u bounds check based on zero-extended MOV Failed to create hash map 
'Operation not permitted'!
   FAIL
   Failed to load prog 'Operation not permitted'!
   #425/u bounds check based on sign-extended MOV. test1 Failed to create hash 
map 'Operation not permitted'!
  --
   #426/u bounds check based on sign-extended MOV. test2 Failed to create hash 
map 'Operation not permitted'!
  --
   #429/u bounds check after truncation of non-boundary-crossing range Failed 
to create hash map 'Operation not permitted'!
   FAIL
   Failed to load prog 'Operation not permitted'!
   #430/u bounds check after truncation of boundary-crossing range (1) Failed 
to create hash map 'Operation not permitted'!
  --
   #431/u bounds check after truncation of boundary-crossing range (2) Failed 
to create hash map 'Operation not permitted'!
  --
   #432/u bounds check after wrapping 32-bit addition Failed to create hash map 
'Operation not permitted'!
   FAIL
   Failed to load prog 'Operation not permitted'!
   #433/u bounds check after shift with oversized count operand Failed to 
create hash map 'Operation not permitted'!
  --
   #434/u bounds check after right shift of maybe-negative number Failed to 
create hash map 'Operation not permitted'!
  --
   #435/u bounds check after 32-bit right shift with 64-bit input Failed to 
create hash map 'Operation not permitted'!
  --
   #436/u bounds check map access with off+size signed 32bit overflow. test1 
Failed to create hash map 'Operation not permitted'!
  --
   #437/u bounds check map access with off+size signed 32bit overflow. test2 
Failed to create hash map 'Operation not permitted'!
  --
   #438/u bounds check map access with off+size signed 32bit overflow. test3 
Failed to create hash map 'Operation not permitted'!
  --
   #439/u bounds check map access with off+size signed 32bit overflow. test4 
Failed to create hash map 'Operation not permitted'!
  --
   #440/u pointer/scalar confusion in state equality check (way 1) Failed to 
create hash map 'Operation not permitted'!
  --
   #441/u pointer/scalar confusion in state equality check (way 2) Failed to 
create hash map 'Operation not permitted'!
  --
   #449/u varlen_map_value_access pruning Failed to create hash map 'Operation 
not permitted'!
  --
   #539/u masking, test out of bounds 1 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #540/u masking, test out of bounds 2 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #541/u masking, test out of bounds 3 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #542/u masking, test out of bounds 4 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #543/u masking, test out of bounds 5 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #544/u masking, test out of bounds 6 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #545/u masking, test out of bounds 7 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #546/u masking, test out of bounds 8 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #547/u masking, test out of bounds 9 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #548/u masking, test out of bounds 10 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #549/u masking, test out of bounds 11 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #550/u masking, test out of bounds 12 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #551/u masking, test in bounds 1 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #552/u masking, test in bounds 2 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #553/u masking, test in bounds 3 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #554/u masking, test in bounds 4 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #555/u masking, test in bounds 5 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #556/u masking, test in bounds 6 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #557/u masking, test in bounds 7 FAIL
   Failed to load prog 'Operation not permitted'!
  --
   #558/u masking, test in bounds 8 FAIL
   Failed to load prog 'Operation not permitted'!
  ....
   Summary: 551 PASSED, 286 FAILED

  It looks like these tests are "unprivileged tests".

  Bisect shows this happens between 4.15.0-169-generic and
  4.15.0-171-generic

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-kernel-tests/+bug/1980648/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to