• Yonghong Song's avatar
    tools/bpf: fix selftest get_cgroup_id_user · 23316a36
    Yonghong Song authored
    Commit f269099a ("tools/bpf: add a selftest for
    bpf_get_current_cgroup_id() helper") added a test
    for bpf_get_current_cgroup_id() helper. The bpf program
    is attached to tracepoint syscalls/sys_enter_nanosleep
    and will record the cgroup id if the tracepoint is hit.
    The test program creates a cgroup and attachs itself to
    this cgroup and expects that the test program process
    cgroup id is the same as the cgroup_id retrieved
    by the bpf program.
    
    In a light system where no other processes called
    nanosleep syscall, the test case can pass.
    In a busy system where many different processes can hit
    syscalls/sys_enter_nanosleep tracepoint, the cgroup id
    recorded by bpf program may not match the test program
    process cgroup_id.
    
    This patch fixed an issue by communicating the test program
    pid to bpf program. The bpf program only records
    cgroup id if the current task pid is the same as
    passed-in pid. This ensures that the recorded cgroup_id
    is for the cgroup within which the test program resides.
    
    Fixes: f269099a ("tools/bpf: add a selftest for bpf_get_current_cgroup_id() helper")
    Signed-off-by: default avatarYonghong Song <yhs@fb.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    23316a36
get_cgroup_id_user.c 3.84 KB