ebp:如何完成类型的访问,如果类型变了会怎么办

bpf程序是如何控制内存类型的访问

bpf_probe_read

试着把类型转化的部分,换成一个内核不识别的函数,看下下编译和执行是否都能正确地进行~

把内核中samples/bpf中的tracex1_kern.c中的
skb = (struct sk_buff*) PT_REGS_PARM1(ctx);
中的sk_buff替换成一种别的结构体 net_device,然后在编译的时候,会出现这种错误:结构体的结构体的解析是按照;【问题:运行时的检查是什么样子的
samples/bpf/tracex1_kern.c:32:6: warning: incompatible pointer types assigning to 'struct sk_buff *'
      from 'struct net_device *' [-Wincompatible-pointer-types]
        skb = (struct net_device*) PT_REGS_PARM1(ctx);
            ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.

 

运行时的检查会是什么样子的,bpf会记录这个内核结构体是什么东西,然后在真正执行的时候,会去检查内核结构体中的size是不是,内核中是记录着结构体的信息,是在dwarf里面吧?然后也会记录着这个地方是用的哪个数据结构,在运行的时候,会去检查实际访问这个地址是否是合法的,

 

posted @ 2022-02-19 14:42  honpey  阅读(76)  评论(0编辑  收藏  举报