• Manu Bretelle's avatar
    selftests/bpf: Fixes tests for filesystem kfuncs · f77d7956
    Manu Bretelle authored
    `fs_kfuncs.c`'s `test_xattr` would fail the test even when the
    filesystem did not support xattr, for instance when /tmp is mounted as
    tmpfs.
    
    This change checks errno when setxattr fail. If the failure is due to
    the operation being unsupported, we will skip the test (just like we
    would if verity was not enabled on the FS.
    
    Before the change, fs_kfuncs test would fail in test_axattr:
    
     $ vmtest -k $(make -s image_name) './tools/testing/selftests/bpf/test_progs -a fs_kfuncs'
     => bzImage
     ===> Booting
     [    0.000000] rcu:        RCU restricting CPUs from NR_CPUS=128 to
     nr_cpu_
     ===> Setting up VM
     ===> Running command
     [    4.157491] bpf_testmod: loading out-of-tree module taints kernel.
     [    4.161515] bpf_testmod: module verification failed: signature and/or
     required key missing - tainting kernel
     test_xattr:PASS:create_file 0 nsec
     test_xattr:FAIL:setxattr unexpected error: -1 (errno 95)
     #90/1    fs_kfuncs/xattr:FAIL
     #90/2    fs_kfuncs/fsverity:SKIP
     #90      fs_kfuncs:FAIL
    
     All error logs:
     test_xattr:PASS:create_file 0 nsec
     test_xattr:FAIL:setxattr unexpected error: -1 (errno 95)
     #90/1    fs_kfuncs/xattr:FAIL
     #90      fs_kfuncs:FAIL
    
     Summary: 0/0 PASSED, 1 SKIPPED, 1 FAILED
    
    Test plan:
    
      $ touch tmpfs_file && truncate -s 1G tmpfs_file && mkfs.ext4 tmpfs_file
      # /tmp mounted as tmpfs
      $ vmtest -k $(make -s image_name) './tools/testing/selftests/bpf/test_progs -a fs_kfuncs'
      => bzImage
      ===> Booting
      ===> Setting up VM
      ===> Running command
      WARNING! Selftests relying on bpf_testmod.ko will be skipped.
      Can't find bpf_testmod.ko kernel module: -2
      #90/1    fs_kfuncs/xattr:SKIP
      #90/2    fs_kfuncs/fsverity:SKIP
      #90      fs_kfuncs:SKIP
      Summary: 1/0 PASSED, 2 SKIPPED, 0 FAILED
      # /tmp mounted as ext4 with xattr enabled but not verity
      $ vmtest -k $(make -s image_name) 'mount -o loop tmpfs_file /tmp && \
        /tools/testing/selftests/bpf/test_progs -a fs_kfuncs'
      => bzImage
      ===> Booting
      ===> Setting up VM
      ===> Running command
      [    4.067071] loop0: detected capacity change from 0 to 2097152
      [    4.191882] EXT4-fs (loop0): mounted filesystem
      407ffa36-4553-4c8c-8c78-134443630f69 r/w with ordered data mode. Quota
      mode: none.
      WARNING! Selftests relying on bpf_testmod.ko will be skipped.
      Can't find bpf_testmod.ko kernel module: -2
      #90/1    fs_kfuncs/xattr:OK
      #90/2    fs_kfuncs/fsverity:SKIP
      #90      fs_kfuncs:OK (SKIP: 1/2)
      Summary: 1/1 PASSED, 1 SKIPPED, 0 FAILED
      $ tune2fs -O verity tmpfs_file
      # /tmp as ext4 with both xattr and verity enabled
      $ vmtest -k $(make -s image_name) 'mount -o loop tmpfs_file /tmp && \
        ./tools/testing/selftests/bpf/test_progs -a fs_kfuncs'
      => bzImage
      ===> Booting
      ===> Setting up VM
      ===> Running command
      [    4.291434] loop0: detected capacity change from 0 to 2097152
      [    4.460828] EXT4-fs (loop0): recovery complete
      [    4.468631] EXT4-fs (loop0): mounted filesystem
      7b4a7b7f-c442-4b06-9ede-254e63cceb52 r/w with ordered data mode. Quota
      mode: none.
      [    4.988074] fs-verity: sha256 using implementation "sha256-generic"
      WARNING! Selftests relying on bpf_testmod.ko will be skipped.
      Can't find bpf_testmod.ko kernel module: -2
      #90/1    fs_kfuncs/xattr:OK
      #90/2    fs_kfuncs/fsverity:OK
      #90      fs_kfuncs:OK
      Summary: 1/2 PASSED, 0 SKIPPED, 0 FAILED
    
    Fixes: 341f06fd ("selftests/bpf: Add tests for filesystem kfuncs")
    Signed-off-by: default avatarManu Bretelle <chantr4@gmail.com>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Acked-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/bpf/20231211180733.763025-1-chantr4@gmail.com
    f77d7956
fs_kfuncs.c 3.47 KB