Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\bpf\core.c Create Date:2022-07-28 12:47:37
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:bpf_prog_calc_tag

Proto:int bpf_prog_calc_tag(struct bpf_prog *fp)

Type:int

Parameter:

TypeParameterName
struct bpf_prog *fp
267  bits_offset = s - sizeof(__be64)
268  raw_size = bpf_prog_tag_scratch_size(fp)
278  raw = vmalloc(raw_size)
279  If Not raw Then Return -ENOMEM
282  sha_init - initialize the vectors for a SHA1 digest*@buf: vector to initialize
283  memset(ws, 0, size of ws )
288  dst = raw
289  When i < Number of filter blocks cycle
290  dst[i] = insnsi[i]
295  was_ld_map = true
297  Else if was_ld_map && opcode == 0 && dest register == 0 && source register == 0 && signed offset == 0 Then
302  was_ld_map = false
304  Else
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 = bsize / s
315  todo = raw
316  If bsize - psize >= sizeof(__be64) Then
317  bits = todo + bsize - sizeof(__be64)
318  Else
319  bits = todo + bsize + bits_offset
320  blocks++
322  bits = cpu_to_be64((psize - 1) << 3)
324  When blocks-- cycle
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  When i < SHA_DIGEST_WORDS cycle result[i] = cpu_to_be32(digest[i])
332  No 3D Now!(tag, result, size of tag )
334  vfree(raw)
335  Return 0
Caller
NameDescribe
replace_map_fd_with_map_ptrlook for pseudo eBPF instructions that access map FDs and* replace them with actual map pointers
jit_subprogs