forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftests/powerpc: Add a test for PROT_SAO
PROT_SAO is a powerpc-specific flag to mmap(), and we rely on arch specific logic to allow it to be passed to mmap(). Add a small test to ensure mmap() accepts PROT_SAO. We don't have a good way to test that it actually causes the mapping to be created with the right flags, so for now we just touch the mapping so it's faulted in. In future we might be able to do something better. Signed-off-by: Michael Ellerman <[email protected]>
- Loading branch information
Showing
4 changed files
with
51 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
hugetlb_vs_thp_test | ||
subpage_prot | ||
tempfile | ||
prot_sao |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/* | ||
* Copyright 2016, Michael Ellerman, IBM Corp. | ||
* Licensed under GPLv2. | ||
*/ | ||
|
||
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
#include <sys/mman.h> | ||
|
||
#include <asm/cputable.h> | ||
|
||
#include "utils.h" | ||
|
||
#define SIZE (64 * 1024) | ||
|
||
int test_prot_sao(void) | ||
{ | ||
char *p; | ||
|
||
/* 2.06 or later should support SAO */ | ||
SKIP_IF(!have_hwcap(PPC_FEATURE_ARCH_2_06)); | ||
|
||
/* | ||
* Ensure we can ask for PROT_SAO. | ||
* We can't really verify that it does the right thing, but at least we | ||
* confirm the kernel will accept it. | ||
*/ | ||
p = mmap(NULL, SIZE, PROT_READ | PROT_WRITE | PROT_SAO, | ||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); | ||
FAIL_IF(p == MAP_FAILED); | ||
|
||
/* Write to the mapping, to at least cause a fault */ | ||
memset(p, 0xaa, SIZE); | ||
|
||
return 0; | ||
} | ||
|
||
int main(void) | ||
{ | ||
return test_harness(test_prot_sao, "prot-sao"); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters