Blame view
mm/rodata_test.c
1.31 KB
b886d83c5 treewide: Replace... |
1 |
// SPDX-License-Identifier: GPL-2.0-only |
2959a5f72 mm: add arch-inde... |
2 3 4 5 6 |
/* * rodata_test.c: functional test for mark_rodata_ro function * * (C) Copyright 2008 Intel Corporation * Author: Arjan van de Ven <arjan@linux.intel.com> |
2959a5f72 mm: add arch-inde... |
7 |
*/ |
056b9d8a7 mm: remove rodata... |
8 |
#define pr_fmt(fmt) "rodata_test: " fmt |
86f54bb7e mm/rodata_test.c:... |
9 |
#include <linux/rodata_test.h> |
2959a5f72 mm: add arch-inde... |
10 11 |
#include <linux/uaccess.h> #include <asm/sections.h> |
a872eb213 mm: fix RODATA_TE... |
12 |
static const int rodata_test_data = 0xC3; |
2959a5f72 mm: add arch-inde... |
13 14 15 16 17 18 19 20 21 |
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... |
22 23 |
pr_err("test 1 fails (start data) "); |
2959a5f72 mm: add arch-inde... |
24 25 26 27 |
return; } /* test 2: write to the variable; this should fault */ |
fe557319a maccess: rename p... |
28 |
if (!copy_to_kernel_nofault((void *)&rodata_test_data, |
056b9d8a7 mm: remove rodata... |
29 30 31 |
(void *)&zero, sizeof(zero))) { pr_err("test data was not read only "); |
2959a5f72 mm: add arch-inde... |
32 33 34 35 36 |
return; } /* test 3: check the value hasn't changed */ if (rodata_test_data == zero) { |
056b9d8a7 mm: remove rodata... |
37 38 |
pr_err("test data was changed "); |
2959a5f72 mm: add arch-inde... |
39 40 41 42 43 44 45 |
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... |
46 47 |
pr_err("start of .rodata is not page size aligned "); |
2959a5f72 mm: add arch-inde... |
48 49 50 |
return; } if (end & (PAGE_SIZE - 1)) { |
056b9d8a7 mm: remove rodata... |
51 52 |
pr_err("end of .rodata is not page size aligned "); |
2959a5f72 mm: add arch-inde... |
53 54 |
return; } |
056b9d8a7 mm: remove rodata... |
55 56 |
pr_info("all tests were successful "); |
2959a5f72 mm: add arch-inde... |
57 |
} |