static struct kprobe kp[] = {
{
.symbol_name = "soc_pcm_open",
.pre_handler = handler_pre,
.post_handler = handler_post,
},
{
.symbol_name = "soc_pcm_prepare",
.pre_handler = handler_pre,
.post_handler = handler_post,
},
};
//static struct kprobe *kps[] = {&kp[0], &kp[1]};
static struct kprobe *kps[ARRAY_SIZE(kp)] = {0}; //static struct kprobe *kps[]; 这样编译不能通过
a)存在栈超界的隐患:
例如直接在函数中利用栈来获取空间的做法: buf[0x4000]
隐患:有可能累计的任务栈空间根本没有这么多,会将堆的数据覆盖,
产生的问题比较难定位。
修改建议: 我们自己新增的代码中,超过128字节的buf使用malloc去申请空间。
注意及时释放(free)