Re: [PATCH] BPF: Disable on PREEMPT_RT

Daniel Borkmann
2019-10-17T14:54:07Z

On Thu, Oct 17, 2019 at 11:05:01AM +0200, Sebastian Andrzej Siewior wrote:
> Disable BPF on PREEMPT_RT because
> - it allocates and frees memory in atomic context
> - it uses up_read_non_owner()
> - BPF_PROG_RUN() expects to be invoked in non-preemptible context

For the latter you'd also need to disable seccomp-BPF and everything
cBPF related as they are /all/ invoked via BPF_PROG_RUN() ...

> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---
>
> I tried to fix the memory allocations in
> http://lkml.kernel.org/r/20190410143025.11997-1-bigeasy@linutronix.de
>
> but I have no idea how to address the other two issues.
>
> init/Kconfig | 1 +
> net/kcm/Kconfig | 1 +
> 2 files changed, 2 insertions(+)
>
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -1629,6 +1629,7 @@ config KALLSYMS_BASE_RELATIVE
> # syscall, maps, verifier
> config BPF_SYSCALL
> bool "Enable bpf() system call"
> + depends on !PREEMPT_RT
> select BPF
> select IRQ_WORK
> default n
> --- a/net/kcm/Kconfig
> +++ b/net/kcm/Kconfig
> @@ -3,6 +3,7 @@
> config AF_KCM
> tristate "KCM sockets"
> depends on INET
> + depends on !PREEMPT_RT
> select BPF_SYSCALL
> select STREAM_PARSER
> ---help---