mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
bpf: Build-time assert that cpumask offset is zero
The first element of a struct bpf_cpumask is a cpumask_t. This is done to allow struct bpf_cpumask to be cast to a struct cpumask. If this element were ever moved to another field, any BPF program passing a struct bpf_cpumask * to a kfunc expecting a const struct cpumask * would immediately fail to load. Add a build-time assertion so this is assumption is captured and verified. Signed-off-by: David Vernet <void@manifault.com> Link: https://lore.kernel.org/r/20230128141537.100777-1-void@manifault.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
70eb3911d8
commit
cb4a21ea59
@ -52,6 +52,9 @@ struct bpf_cpumask *bpf_cpumask_create(void)
|
||||
{
|
||||
struct bpf_cpumask *cpumask;
|
||||
|
||||
/* cpumask must be the first element so struct bpf_cpumask be cast to struct cpumask. */
|
||||
BUILD_BUG_ON(offsetof(struct bpf_cpumask, cpumask) != 0);
|
||||
|
||||
cpumask = bpf_mem_alloc(&bpf_cpumask_ma, sizeof(*cpumask));
|
||||
if (!cpumask)
|
||||
return NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user