1*5b88319eSDaniel Borkmann // SPDX-License-Identifier: GPL-2.0 2*5b88319eSDaniel Borkmann #include "vmlinux.h" 3*5b88319eSDaniel Borkmann #include <bpf/bpf_helpers.h> 4*5b88319eSDaniel Borkmann 5*5b88319eSDaniel Borkmann /* 6*5b88319eSDaniel Borkmann * One explicit array map and no global variables, so the generated loader 7*5b88319eSDaniel Borkmann * has exactly one map to create (no .rodata/.bss). prog_tests/signed_loader.c 8*5b88319eSDaniel Borkmann * uses this to check that a signed loader ignores ctx-supplied max_entries: 9*5b88319eSDaniel Borkmann * the map must keep its attested size (4), not whatever the host puts in 10*5b88319eSDaniel Borkmann * the loader ctx. 11*5b88319eSDaniel Borkmann */ 12*5b88319eSDaniel Borkmann struct { 13*5b88319eSDaniel Borkmann __uint(type, BPF_MAP_TYPE_ARRAY); 14*5b88319eSDaniel Borkmann __uint(max_entries, 4); 15*5b88319eSDaniel Borkmann __type(key, __u32); 16*5b88319eSDaniel Borkmann __type(value, __u64); 17*5b88319eSDaniel Borkmann } amap SEC(".maps"); 18*5b88319eSDaniel Borkmann 19*5b88319eSDaniel Borkmann SEC("socket") 20*5b88319eSDaniel Borkmann int probe(void *ctx) 21*5b88319eSDaniel Borkmann { 22*5b88319eSDaniel Borkmann __u32 key = 0; 23*5b88319eSDaniel Borkmann __u64 *val = bpf_map_lookup_elem(&amap, &key); 24*5b88319eSDaniel Borkmann 25*5b88319eSDaniel Borkmann return val ? (int)*val : 0; 26*5b88319eSDaniel Borkmann } 27*5b88319eSDaniel Borkmann 28*5b88319eSDaniel Borkmann char _license[] SEC("license") = "GPL"; 29