Linux Audio

Check our new training course

Loading...
v6.13.7
  1// SPDX-License-Identifier: GPL-2.0
  2/* 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_unpriv
 13__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_unpriv
 30__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_unpriv
 47__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_unpriv
 64__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_unpriv
 81__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";
v6.8
  1// SPDX-License-Identifier: GPL-2.0
  2/* 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_unpriv
 13__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_unpriv
 30__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_unpriv
 47__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_unpriv
 64__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_unpriv
 81__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";