函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\bpf\cgroup.c Create Date:2022-07-27 14:46:51
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:__cgroup_bpf_run_filter_getsockopt

函数原型:int __cgroup_bpf_run_filter_getsockopt(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen, int max_optlen, int retval)

返回类型:int

参数:

类型参数名称
struct sock *sk
intlevel
intoptname
char __user *optval
int __user *optlen
intmax_optlen
intretval
1059  cgrp等于sock_cgroup_ptr( & sk_cgrp_data)
1060  struct bpf_sockopt_kern ctx = {sk = sk, level = level, optname = optname, retval = retval, }
1072  如果非cgroup_bpf_enabled__cgroup_bpf_prog_array_is_empty(cgrp, BPF_CGROUP_GETSOCKOPT)则返回:retval
1076  ret等于sockopt_alloc_buf( & ctx, max_optlen)
1077  如果ret则返回:ret
1080  optlen等于max_optlen
1082  如果非retval
1091  ret等于负EFAULT
1092  转到:out
1095  如果optlen大于max_optlenoptlen等于max_optlen
1098  如果copy_from_user(optval, optval, optlen)不等于0则
1099  ret等于负EFAULT
1100  转到:out
1104  lock_sock(sk)
1105  ret等于BPF_PROG_RUN_ARRAY( array of effective progs in this cgroup [BPF_CGROUP_GETSOCKOPT], & ctx, BPF_PROG_RUN)
1107  release_sock(sk)
1109  如果非ret
1110  ret等于负EPERM
1111  转到:out
1114  如果optlen大于max_optlen
1115  ret等于负EFAULT
1116  转到:out
1122  如果retval不等于0且retval不等于retval
1123  ret等于负EFAULT
1124  转到:out
1127  如果copy_to_user(optval, optval, optlen)或put_user - Write a simple value into user space(optlen, optlen)则
1129  ret等于负EFAULT
1130  转到:out
1133  ret等于retval
1135  out :
1136  sockopt_free_buf( & ctx)
1137  返回:ret