root/tools/testing/selftests/powerpc/mm/prot_sao.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. test_prot_sao
  2. main

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Copyright 2016, Michael Ellerman, IBM Corp.
   4  */
   5 
   6 #include <stdio.h>
   7 #include <stdlib.h>
   8 #include <string.h>
   9 #include <sys/mman.h>
  10 
  11 #include <asm/cputable.h>
  12 
  13 #include "utils.h"
  14 
  15 #define SIZE (64 * 1024)
  16 
  17 int test_prot_sao(void)
  18 {
  19         char *p;
  20 
  21         /* 2.06 or later should support SAO */
  22         SKIP_IF(!have_hwcap(PPC_FEATURE_ARCH_2_06));
  23 
  24         /*
  25          * Ensure we can ask for PROT_SAO.
  26          * We can't really verify that it does the right thing, but at least we
  27          * confirm the kernel will accept it.
  28          */
  29         p = mmap(NULL, SIZE, PROT_READ | PROT_WRITE | PROT_SAO,
  30                  MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
  31         FAIL_IF(p == MAP_FAILED);
  32 
  33         /* Write to the mapping, to at least cause a fault */
  34         memset(p, 0xaa, SIZE);
  35 
  36         return 0;
  37 }
  38 
  39 int main(void)
  40 {
  41         return test_harness(test_prot_sao, "prot-sao");
  42 }

/* [<][>][^][v][top][bottom][index][help] */