brintos

brintos / linux-shallow public Read only

0
0
Text · 4.0 KiB · cca5ea1 Raw
214 lines · c
1// SPDX-License-Identifier: GPL-2.02/* Converted from tools/testing/selftests/bpf/verifier/div0.c */3 4#include <linux/bpf.h>5#include <bpf/bpf_helpers.h>6#include "bpf_misc.h"7 8SEC("socket")9__description("DIV32 by 0, zero check 1")10__success __success_unpriv __retval(42)11__naked void by_0_zero_check_1_1(void)12{13	asm volatile ("					\14	w0 = 42;					\15	w1 = 0;						\16	w2 = 1;						\17	w2 /= w1;					\18	exit;						\19"	::: __clobber_all);20}21 22SEC("socket")23__description("DIV32 by 0, zero check 2")24__success __success_unpriv __retval(42)25__naked void by_0_zero_check_2_1(void)26{27	asm volatile ("					\28	w0 = 42;					\29	r1 = 0xffffffff00000000LL ll;			\30	w2 = 1;						\31	w2 /= w1;					\32	exit;						\33"	::: __clobber_all);34}35 36SEC("socket")37__description("DIV64 by 0, zero check")38__success __success_unpriv __retval(42)39__naked void div64_by_0_zero_check(void)40{41	asm volatile ("					\42	w0 = 42;					\43	w1 = 0;						\44	w2 = 1;						\45	r2 /= r1;					\46	exit;						\47"	::: __clobber_all);48}49 50SEC("socket")51__description("MOD32 by 0, zero check 1")52__success __success_unpriv __retval(42)53__naked void by_0_zero_check_1_2(void)54{55	asm volatile ("					\56	w0 = 42;					\57	w1 = 0;						\58	w2 = 1;						\59	w2 %%= w1;					\60	exit;						\61"	::: __clobber_all);62}63 64SEC("socket")65__description("MOD32 by 0, zero check 2")66__success __success_unpriv __retval(42)67__naked void by_0_zero_check_2_2(void)68{69	asm volatile ("					\70	w0 = 42;					\71	r1 = 0xffffffff00000000LL ll;			\72	w2 = 1;						\73	w2 %%= w1;					\74	exit;						\75"	::: __clobber_all);76}77 78SEC("socket")79__description("MOD64 by 0, zero check")80__success __success_unpriv __retval(42)81__naked void mod64_by_0_zero_check(void)82{83	asm volatile ("					\84	w0 = 42;					\85	w1 = 0;						\86	w2 = 1;						\87	r2 %%= r1;					\88	exit;						\89"	::: __clobber_all);90}91 92SEC("tc")93__description("DIV32 by 0, zero check ok, cls")94__success __retval(8)95__naked void _0_zero_check_ok_cls_1(void)96{97	asm volatile ("					\98	w0 = 42;					\99	w1 = 2;						\100	w2 = 16;					\101	w2 /= w1;					\102	r0 = r2;					\103	exit;						\104"	::: __clobber_all);105}106 107SEC("tc")108__description("DIV32 by 0, zero check 1, cls")109__success __retval(0)110__naked void _0_zero_check_1_cls_1(void)111{112	asm volatile ("					\113	w1 = 0;						\114	w0 = 1;						\115	w0 /= w1;					\116	exit;						\117"	::: __clobber_all);118}119 120SEC("tc")121__description("DIV32 by 0, zero check 2, cls")122__success __retval(0)123__naked void _0_zero_check_2_cls_1(void)124{125	asm volatile ("					\126	r1 = 0xffffffff00000000LL ll;			\127	w0 = 1;						\128	w0 /= w1;					\129	exit;						\130"	::: __clobber_all);131}132 133SEC("tc")134__description("DIV64 by 0, zero check, cls")135__success __retval(0)136__naked void by_0_zero_check_cls(void)137{138	asm volatile ("					\139	w1 = 0;						\140	w0 = 1;						\141	r0 /= r1;					\142	exit;						\143"	::: __clobber_all);144}145 146SEC("tc")147__description("MOD32 by 0, zero check ok, cls")148__success __retval(2)149__naked void _0_zero_check_ok_cls_2(void)150{151	asm volatile ("					\152	w0 = 42;					\153	w1 = 3;						\154	w2 = 5;						\155	w2 %%= w1;					\156	r0 = r2;					\157	exit;						\158"	::: __clobber_all);159}160 161SEC("tc")162__description("MOD32 by 0, zero check 1, cls")163__success __retval(1)164__naked void _0_zero_check_1_cls_2(void)165{166	asm volatile ("					\167	w1 = 0;						\168	w0 = 1;						\169	w0 %%= w1;					\170	exit;						\171"	::: __clobber_all);172}173 174SEC("tc")175__description("MOD32 by 0, zero check 2, cls")176__success __retval(1)177__naked void _0_zero_check_2_cls_2(void)178{179	asm volatile ("					\180	r1 = 0xffffffff00000000LL ll;			\181	w0 = 1;						\182	w0 %%= w1;					\183	exit;						\184"	::: __clobber_all);185}186 187SEC("tc")188__description("MOD64 by 0, zero check 1, cls")189__success __retval(2)190__naked void _0_zero_check_1_cls_3(void)191{192	asm volatile ("					\193	w1 = 0;						\194	w0 = 2;						\195	r0 %%= r1;					\196	exit;						\197"	::: __clobber_all);198}199 200SEC("tc")201__description("MOD64 by 0, zero check 2, cls")202__success __retval(-1)203__naked void _0_zero_check_2_cls_3(void)204{205	asm volatile ("					\206	w1 = 0;						\207	w0 = -1;					\208	r0 %%= r1;					\209	exit;						\210"	::: __clobber_all);211}212 213char _license[] SEC("license") = "GPL";214