at 2:01 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > On Sun, Sep 02, 2018 at 10:32:22AM -0700, Nadav Amit wrote: >> +void __init poking_init(void) >> +{ >> + unsigned long poking_addr; >> + >> + poking_mm = copy_init_mm(); >> + if (!poking_mm) { >> + pr_err("x86/mm: error setting a separate poking address space"); >> + return; >> + } >> + >> + /* >> + * Randomize the poking address, but make sure that the following page >> + * will be mapped at the same PMD. We need 2 pages, so find space for 3, >> + * and adjust the address if the PMD ends after the first one. >> + */ >> + poking_addr = TASK_UNMAPPED_BASE + >> + (kaslr_get_random_long("Poking") & PAGE_MASK) % >> + (TASK_SIZE - TASK_UNMAPPED_BASE - 3 * PAGE_SIZE); >> + >> + if (((poking_addr + PAGE_SIZE) & ~PMD_MASK) == 0) >> + poking_addr += PAGE_SIZE; >> +} > > This fails to compile for me.. I don't have kaslr_get_random_long(). Will be fixed in v3. Thanks.