mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
ftrace: Let ftrace_call_adjust() reject a patch site
When ftrace_call_adjust() returns 0 for a patch site,
ftrace_process_locs() does not skip the site. The NULL test runs before
the adjustment since commit 6eeca746fa ("ftrace: Test mcount_loc
addr before calling ftrace_call_addr()"), so the 0 is stored as the
record's ip and ftrace_init_nop() later hits the BUG_ON() in arm64's
patch_map(). Test the adjusted address too and count the site as
skipped.
Link: https://patch.msgid.link/20260924-b4-arm64-callops-kcfi-v2-2-587865b6d991@linux.dev
Reviewed-by: Ben Cressey <ben@cressey.dev>
Reviewed-by: Florent Revest (Anthropic) <florent.revest@linux.dev>
Assisted-by: LLM
Signed-off-by: Jose Fernandez (Anthropic) <jose.fernandez@linux.dev>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
6703ab347f
commit
c738829502
|
|
@ -7707,6 +7707,11 @@ static int ftrace_process_locs(struct module *mod,
|
|||
}
|
||||
|
||||
addr = ftrace_call_adjust(addr);
|
||||
/* The architecture may return 0 to reject a patch site */
|
||||
if (!addr) {
|
||||
skipped++;
|
||||
continue;
|
||||
}
|
||||
|
||||
end_offset = (pg->index+1) * sizeof(pg->records[0]);
|
||||
if (end_offset > PAGE_SIZE << pg->order) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user