Lines Matching defs:linfo
259 const struct bpf_line_info *linfo;
270 linfo = prog->aux->linfo;
272 if (insn_off < linfo[i].insn_off) {
277 return &linfo[i - 1];
372 const struct bpf_line_info *linfo;
378 linfo = find_linfo(env, insn_off);
379 if (!linfo || linfo == env->prev_linfo) {
391 verbose(env, "%s\n", ltrim(btf_name_by_offset(env->prog->aux->btf, linfo->line_off)));
393 env->prev_linfo = linfo;
8699 struct bpf_line_info *linfo;
8721 linfo = kvcalloc(nr_linfo, sizeof(struct bpf_line_info), GFP_KERNEL | __GFP_NOWARN);
8722 if (!linfo) {
8746 if (copy_from_user(&linfo[i], ulinfo, ncopy)) {
8756 * The linfo[0].insn_off == 0 check logically falls into
8758 * because the first linfo[0].insn_off must be the
8762 if ((i && linfo[i].insn_off <= prev_offset) || linfo[i].insn_off >= prog->len) {
8763 verbose(env, "Invalid line_info[%u].insn_off:%u (prev_offset:%u prog->len:%u)\n", i, linfo[i].insn_off,
8769 if (!prog->insnsi[linfo[i].insn_off].code) {
8775 if (!btf_name_by_offset(btf, linfo[i].line_off) || !btf_name_by_offset(btf, linfo[i].file_name_off)) {
8782 if (linfo[i].insn_off == sub[s].start) {
8785 } else if (sub[s].start < linfo[i].insn_off) {
8792 prev_offset = linfo[i].insn_off;
8802 prog->aux->linfo = linfo;
8808 kvfree(linfo);
10482 struct bpf_line_info *linfo;
10489 linfo = prog->aux->linfo;
10493 if (linfo[i].insn_off >= off) {
10501 if (linfo[i].insn_off < off + cnt) {
10508 /* First live insn doesn't match first live linfo, it needs to "inherit"
10509 * last removed linfo. prog is already modified, so prog->len == off
10512 if (prog->len != off && l_cnt && (i == nr_linfo || linfo[i].insn_off != off + cnt)) {
10514 linfo[--i].insn_off = off + cnt;
10519 memmove(linfo + l_off, linfo + i, sizeof(*linfo) * (nr_linfo - i));
10525 /* pull all linfo[i].insn_off >= off + cnt in by cnt */
10527 linfo[i].insn_off -= cnt;
11056 func[i]->aux->linfo = prog->aux->linfo;