selftests/bpf: Add a selftest with > 512-byte percpu allocation size
authorYonghong Song <yonghong.song@linux.dev>
Fri, 22 Dec 2023 03:18:12 +0000 (19:18 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 4 Jan 2024 05:08:26 +0000 (21:08 -0800)
Add a selftest to capture the verification failure when the allocation
size is greater than 512.

Acked-by: Hou Tao <houtao1@huawei.com>
Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/r/20231222031812.1293190-1-yonghong.song@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/progs/percpu_alloc_fail.c

index 1a891d30f1fe014f4a5fe3c1397f5f07a82771c1..f2b8eb2ff76f7a98a088ae20b4f8afc3b98ab941 100644 (file)
@@ -17,6 +17,10 @@ struct val_with_rb_root_t {
        struct bpf_spin_lock lock;
 };
 
+struct val_600b_t {
+       char b[600];
+};
+
 struct elem {
        long sum;
        struct val_t __percpu_kptr *pc;
@@ -161,4 +165,18 @@ int BPF_PROG(test_array_map_7)
        return 0;
 }
 
+SEC("?fentry.s/bpf_fentry_test1")
+__failure __msg("bpf_percpu_obj_new type size (600) is greater than 512")
+int BPF_PROG(test_array_map_8)
+{
+       struct val_600b_t __percpu_kptr *p;
+
+       p = bpf_percpu_obj_new(struct val_600b_t);
+       if (!p)
+               return 0;
+
+       bpf_percpu_obj_drop(p);
+       return 0;
+}
+
 char _license[] SEC("license") = "GPL";