Re: linux-next: /home/broonie/tmpfs/next/kernel/bpf/verifier.c:

From: Daniel Borkmann
Date: Thu Oct 19 2017 - 10:04:45 EST


On 10/19/2017 03:55 PM, Mark Brown wrote:
Hi all,

After merging the net-next tree, today's linux-next build (x86allmodconfig)
failed like this:

/home/broonie/tmpfs/next/kernel/bpf/verifier.c: In function 'check_mem_access':
/home/broonie/tmpfs/next/kernel/bpf/verifier.c:1010:12: error: passing argument 1 of 'verbose' from incompatible pointer type [-Werror=incompatible-pointer-types]
verbose("dereference of modified ctx ptr R%d off=%d+%d, ctx+const is allowed, ctx+const+const is not\n",
^

Yeah, the verbose calls need to have env passed into them:

verbose(env, [...])

See also the note below '---':

http://patchwork.ozlabs.org/patch/826449/

/home/broonie/tmpfs/next/kernel/bpf/verifier.c:173:28: note: expected 'struct bpf_verifier_env *' but argument is of type 'char *'
static __printf(2, 3) void verbose(struct bpf_verifier_env *env,
^
/home/broonie/tmpfs/next/kernel/bpf/verifier.c:1011:5: warning: passing argument 2 of 'verbose' makes pointer from integer without a cast [-Wint-conversion]
regno, reg->off, off - reg->off);
^
/home/broonie/tmpfs/next/kernel/bpf/verifier.c:173:28: note: expected 'const char *' but argument is of type 'u32 {aka unsigned int}'
static __printf(2, 3) void verbose(struct bpf_verifier_env *env,
^
cc1: some warnings being treated as errors
/home/broonie/tmpfs/next/scripts/Makefile.build:313: recipe for target 'kernel/bpf/verifier.o' failed

Caused by commit

28e33f9d78eef ("bpf: disallow arithmetic operations on context pointer")

interacting with

61bd5218eef34 ("bpf: move global verifier log into verifier environment")