next_insn = next_insn_to_validate(file, insn);
 
                if (func && insn->func && func != insn->func->pfunc) {
+                       /* Ignore KCFI type preambles, which always fall through */
+                       if (!strncmp(func->name, "__cfi_", 6))
+                               return 0;
+
                        WARN("%s() falls through to next function %s()",
                             func->name, insn->func->name);
                        return 1;
                    !strcmp(sec->name, "__bug_table")                   ||
                    !strcmp(sec->name, "__ex_table")                    ||
                    !strcmp(sec->name, "__jump_table")                  ||
-                   !strcmp(sec->name, "__mcount_loc"))
+                   !strcmp(sec->name, "__mcount_loc")                  ||
+                   !strcmp(sec->name, ".kcfi_traps"))
                        continue;
 
                list_for_each_entry(reloc, &sec->reloc->reloc_list, list)