函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\bpf\syscall.c Create Date:2022-07-27 14:07:59
Last Modify:2022-05-19 18:06:12 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:bpf_task_fd_query

函数原型:static int bpf_task_fd_query(const union bpf_attr *attr, union bpf_attr __user *uattr)

返回类型:int

参数:

类型参数名称
const union bpf_attr *attr
union bpf_attr __user *uattr
2915  pid等于 input: pid
2916  fd等于 input: fd
2923  如果helper macro to check that unused fields 'union bpf_attr' are zero (BPF_TASK_FD_QUERY)则返回:负EINVAL
2926  如果非操作权限检查则返回:负EPERM
2929  如果 input: flags 不等于0则返回:负EINVAL
2932  task等于get_pid_task(find_vpid(pid), 单一进程)
2933  如果非task则返回:负ENOENT
2936  files等于get_files_struct(task)
2937  put_task_struct(task)
2938  如果非files则返回:负ENOENT
2941  err等于0
2942  加自旋锁
2943  file等于fcheck_files(files, fd)
2944  如果非fileerr等于负EBADF
2946  否则get_file(file)
2948  自旋锁解锁
2949  put_files_struct(files)
2951  如果err则转到:out
2954  如果f_op恒等于bpf_raw_tp_fops
2955  raw_tp等于 needed for tty driver, and maybe others
2956  btp等于btp
2958  err等于bpf_task_fd_query_copy(attr, uattr, id, BPF_FD_TYPE_RAW_TRACEPOINT, Tracepoint name , 0, 0)
2962  转到:put_file
2965  event等于perf_get_event(file)
2966  如果非是错误
2971  err等于bpf_get_perf_event_info(event, & prog_id, & fd_type, & buf, & probe_offset, & probe_addr)
2974  如果非errerr等于bpf_task_fd_query_copy(attr, uattr, prog_id, fd_type, buf, probe_offset, probe_addr)
2979  转到:put_file
2982  err等于负Operation is not supported
2983  put_file :
2984  fput(file)
2985  out :
2986  返回:err