函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:bpf_prog_calc_tag

函数原型:int bpf_prog_calc_tag(struct bpf_prog *fp)

返回类型:int

参数:

类型参数名称
struct bpf_prog *fp
267  bits_offset等于ssizeof(__be64)
268  raw_size等于bpf_prog_tag_scratch_size(fp)
278  raw等于vmalloc(raw_size)
279  如果非raw则返回:负ENOMEM
282  初始化一个SHA1向量
283  memset(ws, 0, ws的长度)
288  dst等于raw
289 i小于 Number of filter blocks 循环
290  dst[i]等于insnsi[i]
295  was_ld_map = true
297  否则如果was_ld_map opcode 恒等于0且 dest register 恒等于0且 source register 恒等于0且 signed offset 恒等于0则
302  was_ld_map = false
304  否则
305  was_ld_map = false
309  psize等于bpf_prog_insn_size(fp)
310  memset( & raw[psize], 0, raw_size - psize)
311  raw[psize++]等于0x80
313  bsize等于und_up - round up to next specified power of 2*@x: the value to round*@y: multiple to round up to (must be a power of 2)* Rounds @x up to next multiple of @y (which must be a power of 2).* To perform arbitrary rounding up, use roundup() below.(psize, s)
314  blocks等于bsizes
315  todo等于raw
316  如果bsizepsize大于等于sizeof(__be64)则
317  bits等于todobsizesizeof(__be64)
318  否则
319  bits等于todobsizebits_offset
320  blocks自加
322  bits等于cpu_to_be64((psize - 1) << 3)
324 blocks自减循环
325  sha_transform - single block SHA1 transform*@digest: 160 bit digest to update*@data: 512 bits of data to hash*@array: 16 words of workspace (see note)* This function generates a SHA1 digest for a single 512-bit block
326  todo加等于s
329  result等于digest
330 i小于SHA_DIGEST_WORDS循环result[i]等于cpu_to_be32(digest[i])
332  内存复制(tag, result, tag的长度)
334  vfree(raw)
335  返回:0
调用者
名称描述
replace_map_fd_with_map_ptrlook for pseudo eBPF instructions that access map FDs and* replace them with actual map pointers
jit_subprogs