void regenerate(void) { if (no_files == TRUE) /* We don't regenerate sockets */ return; /* we're about to exit. */ if (shm->spawn_no_more) return; shm->regenerating = TRUE; sleep(1); /* give children time to finish with fds. */ shm->regenerate = 0; output(0, "Regenerating random pages, fd's etc.\n"); regenerate_fds(); /* Do random setsockopts on all network sockets. */ do_sso_sockets(); destroy_maps(); setup_maps(); generate_random_page(page_rand); shm->regenerating = FALSE; }
static void dirty_first_page(struct map *map) { char *p = map->ptr; mark_page_rw(map, map->ptr); generate_random_page(p); }
static unsigned long random_ioctl_arg(void) { if (RAND_BOOL()) { return (unsigned long) rand64(); } else { void *page; page = get_writable_address(page_size); generate_random_page(page); return (unsigned long) page; } }
static void regenerate(void) { if (no_files == TRUE) /* We don't regenerate sockets */ return; shm->regenerating = TRUE; sleep(1); /* give children time to finish with fds. */ shm->regenerate = 0; output(0, "[%d] Regenerating random pages, fd's etc.\n", getpid()); regenerate_fds(); destroy_maps(); setup_maps(); generate_random_page(page_rand); shm->regenerating = FALSE; }
static void init_buffers(void) { unsigned int i; output(2, "shm is at %p\n", shm); page_zeros = memalign(page_size, page_size * 2); if (!page_zeros) exit(EXIT_FAILURE); memset(page_zeros, 0, page_size); output(2, "page_zeros @ %p\n", page_zeros); page_0xff = memalign(page_size, page_size * 2); if (!page_0xff) exit(EXIT_FAILURE); memset(page_0xff, 0xff, page_size); output(2, "page_0xff @ %p\n", page_0xff); page_rand = memalign(page_size, page_size * 2); if (!page_rand) exit(EXIT_FAILURE); memset(page_rand, 0x55, page_size); /* overwritten below */ output(2, "page_rand @ %p\n", page_rand); page_allocs = memalign(page_size, page_size * 2); if (!page_allocs) exit(EXIT_FAILURE); memset(page_allocs, 0xff, page_size); output(2, "page_allocs @ %p\n", page_allocs); for (i = 0; i < (page_size / sizeof(unsigned long *)); i++) page_allocs[i] = (unsigned long) malloc(page_size); setup_global_mappings(); // generate_random_page may end up using global_mappings, so has to be last. generate_random_page(page_rand); }