bpf: check pending signals while verifying programs
authorAlexei Starovoitov <ast@kernel.org>
Tue, 4 Dec 2018 06:46:04 +0000 (22:46 -0800)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 4 Dec 2018 16:22:02 +0000 (17:22 +0100)
Malicious user space may try to force the verifier to use as much cpu
time and memory as possible. Hence check for pending signals
while verifying the program.
Note that suspend of sys_bpf(PROG_LOAD) syscall will lead to EAGAIN,
since the kernel has to release the resources used for program verification.

Reported-by: Anatoly Trosinenko <anatoly.trosinenko@gmail.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
kernel/bpf/verifier.c

index 6dd419550aba4b98a45ee1e5b1cf6fde4bd7c354..751bb30b7c5cc82b766110e930a3118868624dc8 100644 (file)
@@ -5148,6 +5148,9 @@ static int do_check(struct bpf_verifier_env *env)
                        goto process_bpf_exit;
                }
 
+               if (signal_pending(current))
+                       return -EAGAIN;
+
                if (need_resched())
                        cond_resched();