函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:__cgroup_bpf_run_filter_setsockopt

函数原型:int __cgroup_bpf_run_filter_setsockopt(struct sock *sk, int *level, int *optname, char __user *optval, int *optlen, char **kernel_optval)

返回类型:int

参数:

类型参数名称
struct sock *sk
int *level
int *optname
char __user *optval
int *optlen
char **kernel_optval
987  cgrp等于sock_cgroup_ptr( & sk_cgrp_data)
988  struct bpf_sockopt_kern ctx = {sk = sk, level = * level, optname = * optname, }
999  如果非cgroup_bpf_enabled__cgroup_bpf_prog_array_is_empty(cgrp, BPF_CGROUP_SETSOCKOPT)则返回:0
1007  max_optlen等于max_t - return maximum of two values, using the specified type*@type: data type to use*@x: first value*@y: second value(int, 16, * optlen)
1009  ret等于sockopt_alloc_buf( & ctx, max_optlen)
1010  如果ret则返回:ret
1013  optlen等于optlen
1015  如果copy_from_user(optval, optval, * optlen)不等于0则
1016  ret等于负EFAULT
1017  转到:out
1020  lock_sock(sk)
1021  ret等于BPF_PROG_RUN_ARRAY( array of effective progs in this cgroup [BPF_CGROUP_SETSOCKOPT], & ctx, BPF_PROG_RUN)
1023  release_sock(sk)
1025  如果非ret
1026  ret等于负EPERM
1027  转到:out
1030  如果optlen恒等于负1则
1032  ret等于1
1033  否则如果optlen大于max_optlenoptlen小于负1则
1035  ret等于负EFAULT
1036  否则
1038  ret等于0
1041  level等于level
1042  optname等于optname
1043  optlen等于optlen
1044  kernel_optval等于optval
1047  out :
1048  如果retsockopt_free_buf( & ctx)
1050  返回:ret