mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-16 13:34:30 +00:00
Probe fixes for 6.5-rc3:
- probe-events: Fix to add NULL check for some BTF API calls which can return error code and NULL. - ftrace selftests: Fix to check fprobe and kprobe event correctly. This fixes a miss condition of the test command. - kprobes: Prohibit probing on the function which starts from "__cfi_" and "__pfx_" since those are auto generated for kernel CFI and not executed. -----BEGIN PGP SIGNATURE----- iQFPBAABCgA5FiEEh7BulGwFlgAOi5DV2/sHvwUrPxsFAmTGdH4bHG1hc2FtaS5o aXJhbWF0c3VAZ21haWwuY29tAAoJENv7B78FKz8bmMAH/0qTHII0KYQDvrNJ40tT SDM8+4zOJEtnjVYq87+4EWBhpVEL3VbLRJaprjXh40lZJrCP3MglCF152p4bOhgb ZrjWuTAgE0N+rBhdeUJlzy3iLzl0G9dzfA+sn1XMcW+/HSPstJcjAG6wD7ROeZzL XCxzE+NY6Y6mYbB52DaS8Hv7g7WccaTV+KeRjokhMPt+u7/KItJ4hQb/RXtAL31S n4thCeVllaPBuc7m2CmKwJ9jzOg7/0qpAIUGx1Z+Khy/3YfRhG1nT93GxP8hLmad SH9kGps09WXF5f8FbjYglOmq7ioDbIUz3oXPQRZYPymV8A0EU+b+/8IsRog1ySd1 BVk= =qKWS -----END PGP SIGNATURE----- Merge tag 'probes-fixes-v6.5-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace Pull probe fixes from Masami Hiramatsu: - probe-events: add NULL check for some BTF API calls which can return error code and NULL. - ftrace selftests: check fprobe and kprobe event correctly. This fixes a miss condition of the test command. - kprobes: do not allow probing functions that start with "__cfi_" or "__pfx_" since those are auto generated for kernel CFI and not executed. * tag 'probes-fixes-v6.5-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace: kprobes: Prohibit probing on CFI preamble symbol selftests/ftrace: Fix to check fprobe event eneblement tracing/probes: Fix to add NULL check for BTF APIs
This commit is contained in:
commit
b0b9850e7d
@ -1545,6 +1545,17 @@ static int check_ftrace_location(struct kprobe *p)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool is_cfi_preamble_symbol(unsigned long addr)
|
||||
{
|
||||
char symbuf[KSYM_NAME_LEN];
|
||||
|
||||
if (lookup_symbol_name(addr, symbuf))
|
||||
return false;
|
||||
|
||||
return str_has_prefix("__cfi_", symbuf) ||
|
||||
str_has_prefix("__pfx_", symbuf);
|
||||
}
|
||||
|
||||
static int check_kprobe_address_safe(struct kprobe *p,
|
||||
struct module **probed_mod)
|
||||
{
|
||||
@ -1563,7 +1574,8 @@ static int check_kprobe_address_safe(struct kprobe *p,
|
||||
within_kprobe_blacklist((unsigned long) p->addr) ||
|
||||
jump_label_text_reserved(p->addr, p->addr) ||
|
||||
static_call_text_reserved(p->addr, p->addr) ||
|
||||
find_bug((unsigned long)p->addr)) {
|
||||
find_bug((unsigned long)p->addr) ||
|
||||
is_cfi_preamble_symbol((unsigned long)p->addr)) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
@ -386,12 +386,12 @@ static const struct btf_type *find_btf_func_proto(const char *funcname)
|
||||
|
||||
/* Get BTF_KIND_FUNC type */
|
||||
t = btf_type_by_id(btf, id);
|
||||
if (!btf_type_is_func(t))
|
||||
if (!t || !btf_type_is_func(t))
|
||||
return ERR_PTR(-ENOENT);
|
||||
|
||||
/* The type of BTF_KIND_FUNC is BTF_KIND_FUNC_PROTO */
|
||||
t = btf_type_by_id(btf, t->type);
|
||||
if (!btf_type_is_func_proto(t))
|
||||
if (!t || !btf_type_is_func_proto(t))
|
||||
return ERR_PTR(-ENOENT);
|
||||
|
||||
return t;
|
||||
@ -443,7 +443,7 @@ static int parse_btf_arg(const char *varname, struct fetch_insn *code,
|
||||
if (!ctx->params) {
|
||||
params = find_btf_func_param(ctx->funcname, &ctx->nr_params,
|
||||
ctx->flags & TPARG_FL_TPOINT);
|
||||
if (IS_ERR(params)) {
|
||||
if (IS_ERR_OR_NULL(params)) {
|
||||
trace_probe_log_err(ctx->offset, NO_BTF_ENTRY);
|
||||
return PTR_ERR(params);
|
||||
}
|
||||
@ -1273,7 +1273,7 @@ const char **traceprobe_expand_meta_args(int argc, const char *argv[],
|
||||
|
||||
params = find_btf_func_param(ctx->funcname, &nr_params,
|
||||
ctx->flags & TPARG_FL_TPOINT);
|
||||
if (IS_ERR(params)) {
|
||||
if (IS_ERR_OR_NULL(params)) {
|
||||
if (args_idx != -1) {
|
||||
/* $arg* requires BTF info */
|
||||
trace_probe_log_err(0, NOSUP_BTFARG);
|
||||
|
@ -13,7 +13,7 @@ if grep -qF "f[:[<group>/][<event>]] <func-name>[%return] [<args>]" README ; the
|
||||
FPROBES=yes
|
||||
fi
|
||||
|
||||
if [ -z "$KPROBES" -a "$FPROBES" ] ; then
|
||||
if [ -z "$KPROBES" -a -z "$FPROBES" ] ; then
|
||||
exit_unsupported
|
||||
fi
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user