brintos

brintos / linux-shallow public Read only

0
0
Text · 2.3 KiB · c925ba9 Raw
111 lines · c
1// SPDX-License-Identifier: GPL-2.02/* Converted from tools/testing/selftests/bpf/verifier/ld_ind.c */3 4#include <linux/bpf.h>5#include <bpf/bpf_helpers.h>6#include "../../../include/linux/filter.h"7#include "bpf_misc.h"8 9SEC("socket")10__description("ld_ind: check calling conv, r1")11__failure __msg("R1 !read_ok")12__failure_unpriv13__naked void ind_check_calling_conv_r1(void)14{15	asm volatile ("					\16	r6 = r1;					\17	r1 = 1;						\18	.8byte %[ld_ind];				\19	r0 = r1;					\20	exit;						\21"	:22	: __imm_insn(ld_ind, BPF_LD_IND(BPF_W, BPF_REG_1, -0x200000))23	: __clobber_all);24}25 26SEC("socket")27__description("ld_ind: check calling conv, r2")28__failure __msg("R2 !read_ok")29__failure_unpriv30__naked void ind_check_calling_conv_r2(void)31{32	asm volatile ("					\33	r6 = r1;					\34	r2 = 1;						\35	.8byte %[ld_ind];				\36	r0 = r2;					\37	exit;						\38"	:39	: __imm_insn(ld_ind, BPF_LD_IND(BPF_W, BPF_REG_2, -0x200000))40	: __clobber_all);41}42 43SEC("socket")44__description("ld_ind: check calling conv, r3")45__failure __msg("R3 !read_ok")46__failure_unpriv47__naked void ind_check_calling_conv_r3(void)48{49	asm volatile ("					\50	r6 = r1;					\51	r3 = 1;						\52	.8byte %[ld_ind];				\53	r0 = r3;					\54	exit;						\55"	:56	: __imm_insn(ld_ind, BPF_LD_IND(BPF_W, BPF_REG_3, -0x200000))57	: __clobber_all);58}59 60SEC("socket")61__description("ld_ind: check calling conv, r4")62__failure __msg("R4 !read_ok")63__failure_unpriv64__naked void ind_check_calling_conv_r4(void)65{66	asm volatile ("					\67	r6 = r1;					\68	r4 = 1;						\69	.8byte %[ld_ind];				\70	r0 = r4;					\71	exit;						\72"	:73	: __imm_insn(ld_ind, BPF_LD_IND(BPF_W, BPF_REG_4, -0x200000))74	: __clobber_all);75}76 77SEC("socket")78__description("ld_ind: check calling conv, r5")79__failure __msg("R5 !read_ok")80__failure_unpriv81__naked void ind_check_calling_conv_r5(void)82{83	asm volatile ("					\84	r6 = r1;					\85	r5 = 1;						\86	.8byte %[ld_ind];				\87	r0 = r5;					\88	exit;						\89"	:90	: __imm_insn(ld_ind, BPF_LD_IND(BPF_W, BPF_REG_5, -0x200000))91	: __clobber_all);92}93 94SEC("socket")95__description("ld_ind: check calling conv, r7")96__success __success_unpriv __retval(1)97__naked void ind_check_calling_conv_r7(void)98{99	asm volatile ("					\100	r6 = r1;					\101	r7 = 1;						\102	.8byte %[ld_ind];				\103	r0 = r7;					\104	exit;						\105"	:106	: __imm_insn(ld_ind, BPF_LD_IND(BPF_W, BPF_REG_7, -0x200000))107	: __clobber_all);108}109 110char _license[] SEC("license") = "GPL";111