1// SPDX-License-Identifier: GPL-2.0-only 2/* Copyright (c) 2020 Facebook */ 3#include <stddef.h> 4#include <linux/bpf.h> 5#include <bpf/bpf_helpers.h> 6#include "bpf_misc.h" 7 8__attribute__ ((noinline)) 9int f1(struct __sk_buff *skb) 10{ 11 return skb->len; 12} 13 14int f3(int, struct __sk_buff *skb); 15 16__attribute__ ((noinline)) 17int f2(int val, struct __sk_buff *skb) 18{ 19 return f1(skb) + f3(val, skb + 1); /* type mismatch */ 20} 21 22__attribute__ ((noinline)) 23int f3(int val, struct __sk_buff *skb) 24{ 25 return skb->ifindex * val; 26} 27 28SEC("tc") 29__failure __msg("modified ctx ptr R2") 30int global_func6(struct __sk_buff *skb) 31{ 32 return f1(skb) + f2(2, skb) + f3(3, skb); 33} 34