函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:bpf_patch_insn_single

函数原型:struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off, const struct bpf_insn *patch, u32 len)

返回类型:struct bpf_prog

参数:

类型参数名称
struct bpf_prog *prog
u32off
const struct bpf_insn *patch
u32len
437  insn_delta等于len减1
438  cnt_max等于S16_MAX
443  如果insn_delta恒等于0则
444  内存复制(insnsi + off, patch, patch的长度)
445  返回:prog
448  insn_adj_cnt等于 Number of filter blocks insn_delta
455  如果insn_adj_cnt大于cnt_maxerr等于bpf_adj_branches(prog, off, off + 1, off + len, true)则返回:错误号
463  prog_adj等于bpf_prog_realloc(prog, bpf_prog_size(insn_adj_cnt), GFP_USER)
465  如果非prog_adj则返回:错误号
468  Number of filter blocks 等于insn_adj_cnt
478  insn_rest等于insn_adj_cntofflen
480  memmove(insnsi + off + len, insnsi + off + 1, patch的长度 * insn_rest)
482  内存复制(insnsi + off, patch, patch的长度 * len)
488  BUG_ON(bpf_adj_branches(prog_adj, off, off + 1, off + len, false))
490  bpf_adj_linfo(prog_adj, off, insn_delta)
492  返回:prog_adj
调用者
名称描述
bpf_patch_insn_data