bpf: Unbreak BPF_PROG_TYPE_KPROBE when kprobe is called via do_int3
authorAlexei Starovoitov <ast@kernel.org>
Wed, 3 Feb 2021 07:06:36 +0000 (23:06 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Feb 2021 10:02:25 +0000 (11:02 +0100)
commit52d29b4783268df881b85e76f90da74fbeaa59eb
treeb8e300b69727d2375c7cc00268c72a0581c19e51
parent40e3b5c128645d2ddad12310c7be98758cafb2b0
bpf: Unbreak BPF_PROG_TYPE_KPROBE when kprobe is called via do_int3

[ Upstream commit 548f1191d86ccb9bde2a5305988877b7584c01eb ]

The commit 0d00449c7a28 ("x86: Replace ist_enter() with nmi_enter()")
converted do_int3 handler to be "NMI-like".
That made old if (in_nmi()) check abort execution of bpf programs
attached to kprobe when kprobe is firing via int3
(For example when kprobe is placed in the middle of the function).
Remove the check to restore user visible behavior.

Fixes: 0d00449c7a28 ("x86: Replace ist_enter() with nmi_enter()")
Reported-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Tested-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
Link: https://lore.kernel.org/bpf/20210203070636.70926-1-alexei.starovoitov@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
kernel/trace/bpf_trace.c