159290Sjlemon// SPDX-License-Identifier: GPL-2.0 272969Sjlemon/* Copyright (c) 2020 Facebook */ 359290Sjlemon#include "bpf_iter.h" 459290Sjlemon#include <bpf/bpf_helpers.h> 559290Sjlemon#include <bpf/bpf_tracing.h> 659290Sjlemon 759290Sjlemonchar _license[] SEC("license") = "GPL"; 859290Sjlemon 959290Sjlemonstruct key_t { 1059290Sjlemon int a; 1159290Sjlemon int b; 1259290Sjlemon int c; 1359290Sjlemon}; 1459290Sjlemon 1559290Sjlemonstruct { 1659290Sjlemon __uint(type, BPF_MAP_TYPE_HASH); 1759290Sjlemon __uint(max_entries, 3); 1859290Sjlemon __type(key, struct key_t); 1959290Sjlemon __type(value, __u64); 2059290Sjlemon} hashmap1 SEC(".maps"); 2159290Sjlemon 2259290Sjlemon__u32 key_sum = 0; 2359290Sjlemon 2459290SjlemonSEC("iter/bpf_map_elem") 2559290Sjlemonint dump_bpf_hash_map(struct bpf_iter__bpf_map_elem *ctx) 2699090Sbde{ 2759290Sjlemon void *key = ctx->key; 2859290Sjlemon 2959290Sjlemon if (key == (void *)0) 3059290Sjlemon return 0; 3159290Sjlemon 3259290Sjlemon /* out of bound access w.r.t. hashmap1 */ 3359290Sjlemon key_sum += *(__u32 *)(key + sizeof(struct key_t)); 3459290Sjlemon return 0; 3559290Sjlemon} 3659290Sjlemon