• Yafang Shao's avatar
    bpf: Fix mount source show for bpffs · 1e9d7466
    Yafang Shao authored
    We noticed our tc ebpf tools can't start after we upgrade our in-house kernel
    version from 4.19 to 5.10. That is because of the behaviour change in bpffs
    caused by commit d2935de7 ("vfs: Convert bpf to use the new mount API").
    
    In our tc ebpf tools, we do strict environment check. If the environment is
    not matched, we won't allow to start the ebpf progs. One of the check is whether
    bpffs is properly mounted. The mount information of bpffs in kernel-4.19 and
    kernel-5.10 are as follows:
    
    - kernel 4.19
    $ mount -t bpf bpffs /sys/fs/bpf
    $ mount -t bpf
    bpffs on /sys/fs/bpf type bpf (rw,relatime)
    
    - kernel 5.10
    $ mount -t bpf bpffs /sys/fs/bpf
    $ mount -t bpf
    none on /sys/fs/bpf type bpf (rw,relatime)
    
    The device name in kernel-5.10 is displayed as none instead of bpffs, then our
    environment check fails. Currently we modify the tools to adopt to the kernel
    behaviour change, but I think we'd better change the kernel code to keep the
    behavior consistent.
    
    After this change, the mount information will be displayed the same with the
    behavior in kernel-4.19, for example:
    
    $ mount -t bpf bpffs /sys/fs/bpf
    $ mount -t bpf
    bpffs on /sys/fs/bpf type bpf (rw,relatime)
    
    Fixes: d2935de7 ("vfs: Convert bpf to use the new mount API")
    Suggested-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: default avatarYafang Shao <laoar.shao@gmail.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Link: https://lore.kernel.org/bpf/20220108134623.32467-1-laoar.shao@gmail.com
    1e9d7466
inode.c 17.4 KB