Lines Matching +full:1 +full:- +full:1024

1 // SPDX-License-Identifier: GPL-2.0-only
24 #include "gcs-util.h"
49 gcs_recurse(depth - 1); in gcs_recurse()
85 /* Use a non-NULL value to indicate a pass */ in gcs_test_thread()
119 ksft_print_msg("GCS in use from %p-%p\n", gcs, cur); in TEST()
133 * lift at least some of this out into a separate, non-harness, test
146 if (child == -1) { in TEST()
149 ASSERT_NE(child, -1); in TEST()
158 if (ptrace(PTRACE_TRACEME, -1, NULL, NULL)) in TEST()
172 while (1) { in TEST()
176 if (pid == -1) { in TEST()
204 sig = 0; /* bust group-stop */ in TEST()
269 ret = process_vm_readv(child, &local_iov, 1, &remote_iov, 1, 0); in TEST()
270 if (ret == -1) in TEST()
278 if (ret == -1) in TEST()
286 if (ret == -1) in TEST()
314 .stack_size = 2 * 1024, in FIXTURE_VARIANT_ADD()
320 .stack_size = 2 * 1024, in FIXTURE_VARIANT_ADD()
326 .stack_size = 2 * 1024, in FIXTURE_VARIANT_ADD()
332 .stack_size = 2 * 1024, in FIXTURE_VARIANT_ADD()
338 .stack_size = 4 * 1024, in FIXTURE_VARIANT_ADD()
344 .stack_size = 4 * 1024, in FIXTURE_VARIANT_ADD()
350 .stack_size = 4 * 1024, in FIXTURE_VARIANT_ADD()
356 .stack_size = 4 * 1024, in FIXTURE_VARIANT_ADD()
362 .stack_size = 16 * 1024, in FIXTURE_VARIANT_ADD()
368 .stack_size = 16 * 1024, in FIXTURE_VARIANT_ADD()
374 .stack_size = 16 * 1024, in FIXTURE_VARIANT_ADD()
380 .stack_size = 16 * 1024, in FIXTURE_VARIANT_ADD()
386 .stack_size = 64 * 1024, in FIXTURE_VARIANT_ADD()
392 .stack_size = 64 * 1024, in FIXTURE_VARIANT_ADD()
398 .stack_size = 64 * 1024, in FIXTURE_VARIANT_ADD()
404 .stack_size = 64 * 1024, in FIXTURE_VARIANT_ADD()
410 .stack_size = 128 * 1024, in FIXTURE_VARIANT_ADD()
416 .stack_size = 128 * 1024, in FIXTURE_VARIANT_ADD()
422 .stack_size = 128 * 1024, in FIXTURE_VARIANT_ADD()
428 .stack_size = 128 * 1024, in FIXTURE_VARIANT_ADD()
434 self->stack = (void *)syscall(__NR_map_shadow_stack, 0, in FIXTURE_SETUP()
435 variant->stack_size, in FIXTURE_SETUP()
436 variant->flags); in FIXTURE_SETUP()
437 ASSERT_FALSE(self->stack == MAP_FAILED); in FIXTURE_SETUP()
438 ksft_print_msg("Allocated stack from %p-%p\n", self->stack, in FIXTURE_SETUP()
439 self->stack + variant->stack_size); in FIXTURE_SETUP()
446 if (self->stack != MAP_FAILED) { in FIXTURE_TEARDOWN()
447 ret = munmap(self->stack, variant->stack_size); in FIXTURE_TEARDOWN()
455 unsigned long *stack = self->stack; in TEST_F()
458 cap_index = (variant->stack_size / sizeof(unsigned long)); in TEST_F()
460 switch (variant->flags & (SHADOW_STACK_SET_MARKER | SHADOW_STACK_SET_TOKEN)) { in TEST_F()
462 cap_index -= 2; in TEST_F()
465 cap_index -= 1; in TEST_F()
479 unsigned long *stack = self->stack; in TEST_F()
482 if (!(variant->flags & SHADOW_STACK_SET_MARKER)) in TEST_F()
485 term_index = (variant->stack_size / sizeof(unsigned long)) - 1; in TEST_F()
493 self->stack[0] = 0; in TEST_F_SIGNAL()
500 cap_index = (variant->stack_size / sizeof(unsigned long)); in TEST_F()
504 switch (variant->flags & (SHADOW_STACK_SET_MARKER | SHADOW_STACK_SET_TOKEN)) { in TEST_F()
506 cap_index -= 2; in TEST_F()
509 cap_index -= 1; in TEST_F()
516 pivot_gcspr_el0 = &self->stack[cap_index]; in TEST_F()
531 ASSERT_TRUE((unsigned long)get_gcspr() > (unsigned long)self->stack); in TEST_F()
533 (unsigned long)self->stack + variant->stack_size); in TEST_F()
536 ksft_print_msg("Recursing %zu levels\n", cap_index - 1); in TEST_F()
537 gcs_recurse(cap_index - 1); in TEST_F()
551 cap_index = (variant->stack_size / sizeof(unsigned long)); in TEST_F_SIGNAL()
555 switch (variant->flags & (SHADOW_STACK_SET_MARKER | SHADOW_STACK_SET_TOKEN)) { in TEST_F_SIGNAL()
557 cap_index -= 2; in TEST_F_SIGNAL()
560 cap_index -= 1; in TEST_F_SIGNAL()
569 pivot_gcspr_el0 = &self->stack[cap_index]; in TEST_F_SIGNAL()
584 ASSERT_TRUE((unsigned long)get_gcspr() > (unsigned long)self->stack); in TEST_F_SIGNAL()
586 (unsigned long)self->stack + variant->stack_size); in TEST_F_SIGNAL()
589 ksft_print_msg("Recursing %zu levels...\n", cap_index + 1); in TEST_F_SIGNAL()
590 gcs_recurse(cap_index + 1); in TEST_F_SIGNAL()
623 FIXTURE_VARIANT_ADD(map_invalid_gcs, unligned_1) { .stack_size = 1024 + 1 }; in FIXTURE_VARIANT_ADD()
624 FIXTURE_VARIANT_ADD(map_invalid_gcs, unligned_2) { .stack_size = 1024 + 2 }; in FIXTURE_VARIANT_ADD()
625 FIXTURE_VARIANT_ADD(map_invalid_gcs, unligned_3) { .stack_size = 1024 + 3 }; in FIXTURE_VARIANT_ADD()
626 FIXTURE_VARIANT_ADD(map_invalid_gcs, unligned_4) { .stack_size = 1024 + 4 }; in FIXTURE_VARIANT_ADD()
627 FIXTURE_VARIANT_ADD(map_invalid_gcs, unligned_5) { .stack_size = 1024 + 5 }; in FIXTURE_VARIANT_ADD()
628 FIXTURE_VARIANT_ADD(map_invalid_gcs, unligned_6) { .stack_size = 1024 + 6 }; in FIXTURE_VARIANT_ADD()
629 FIXTURE_VARIANT_ADD(map_invalid_gcs, unligned_7) { .stack_size = 1024 + 7 }; in FIXTURE_VARIANT_ADD()
636 variant->stack_size, 0); in TEST_F()
639 munmap(stack, variant->stack_size); in TEST_F()
655 self->stack_size = sysconf(_SC_PAGE_SIZE); in FIXTURE_SETUP()
656 self->stack = (void *)syscall(__NR_map_shadow_stack, 0, in FIXTURE_SETUP()
657 self->stack_size, 0); in FIXTURE_SETUP()
658 ASSERT_FALSE(self->stack == MAP_FAILED); in FIXTURE_SETUP()
659 ksft_print_msg("Allocated stack from %p-%p\n", self->stack, in FIXTURE_SETUP()
660 self->stack + self->stack_size); in FIXTURE_SETUP()
667 if (self->stack != MAP_FAILED) { in FIXTURE_TEARDOWN()
668 ret = munmap(self->stack, self->stack_size); in FIXTURE_TEARDOWN()
682 ret = mprotect(self->stack, self->stack_size, variant->flags); in TEST_F()
683 ASSERT_EQ(ret, -1); in TEST_F()
690 ret = mprotect(self->stack, self->stack_size, in TEST_F()
691 variant->flags | PROT_READ); in TEST_F()
692 ASSERT_EQ(ret, -1); in TEST_F()