brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · 7718cd7 Raw
62 lines · c
1// SPDX-License-Identifier: GPL-2.02/* Converted from tools/testing/selftests/bpf/verifier/uninit.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("read uninitialized register")11__failure __msg("R2 !read_ok")12__failure_unpriv13__naked void read_uninitialized_register(void)14{15	asm volatile ("					\16	r0 = r2;					\17	exit;						\18"	::: __clobber_all);19}20 21SEC("socket")22__description("read invalid register")23__failure __msg("R15 is invalid")24__failure_unpriv25__naked void read_invalid_register(void)26{27	asm volatile ("					\28	.8byte %[mov64_reg];				\29	exit;						\30"	:31	: __imm_insn(mov64_reg, BPF_MOV64_REG(BPF_REG_0, -1))32	: __clobber_all);33}34 35SEC("socket")36__description("program doesn't init R0 before exit")37__failure __msg("R0 !read_ok")38__failure_unpriv39__naked void t_init_r0_before_exit(void)40{41	asm volatile ("					\42	r2 = r1;					\43	exit;						\44"	::: __clobber_all);45}46 47SEC("socket")48__description("program doesn't init R0 before exit in all branches")49__failure __msg("R0 !read_ok")50__msg_unpriv("R1 pointer comparison")51__naked void before_exit_in_all_branches(void)52{53	asm volatile ("					\54	if r1 >= 0 goto l0_%=;				\55	r0 = 1;						\56	r0 += 2;					\57l0_%=:	exit;						\58"	::: __clobber_all);59}60 61char _license[] SEC("license") = "GPL";62