Blame view
mm/rodata_test.c
1.44 KB
2959a5f72 mm: add arch-inde... |
1 2 3 4 5 6 7 8 9 10 11 |
/* * rodata_test.c: functional test for mark_rodata_ro function * * (C) Copyright 2008 Intel Corporation * Author: Arjan van de Ven <arjan@linux.intel.com> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. */ |
056b9d8a7 mm: remove rodata... |
12 |
#define pr_fmt(fmt) "rodata_test: " fmt |
2959a5f72 mm: add arch-inde... |
13 14 |
#include <linux/uaccess.h> #include <asm/sections.h> |
a872eb213 mm: fix RODATA_TE... |
15 |
static const int rodata_test_data = 0xC3; |
2959a5f72 mm: add arch-inde... |
16 17 18 19 20 21 22 23 24 |
void rodata_test(void) { unsigned long start, end; int zero = 0; /* test 1: read the value */ /* If this test fails, some previous testrun has clobbered the state */ if (!rodata_test_data) { |
056b9d8a7 mm: remove rodata... |
25 26 |
pr_err("test 1 fails (start data) "); |
2959a5f72 mm: add arch-inde... |
27 28 29 30 31 |
return; } /* test 2: write to the variable; this should fault */ if (!probe_kernel_write((void *)&rodata_test_data, |
056b9d8a7 mm: remove rodata... |
32 33 34 |
(void *)&zero, sizeof(zero))) { pr_err("test data was not read only "); |
2959a5f72 mm: add arch-inde... |
35 36 37 38 39 |
return; } /* test 3: check the value hasn't changed */ if (rodata_test_data == zero) { |
056b9d8a7 mm: remove rodata... |
40 41 |
pr_err("test data was changed "); |
2959a5f72 mm: add arch-inde... |
42 43 44 45 46 47 48 |
return; } /* test 4: check if the rodata section is PAGE_SIZE aligned */ start = (unsigned long)__start_rodata; end = (unsigned long)__end_rodata; if (start & (PAGE_SIZE - 1)) { |
056b9d8a7 mm: remove rodata... |
49 50 |
pr_err("start of .rodata is not page size aligned "); |
2959a5f72 mm: add arch-inde... |
51 52 53 |
return; } if (end & (PAGE_SIZE - 1)) { |
056b9d8a7 mm: remove rodata... |
54 55 |
pr_err("end of .rodata is not page size aligned "); |
2959a5f72 mm: add arch-inde... |
56 57 |
return; } |
056b9d8a7 mm: remove rodata... |
58 59 |
pr_info("all tests were successful "); |
2959a5f72 mm: add arch-inde... |
60 |
} |