1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * Copyright Red Hat
4 * Author: Dennis Brendel <[email protected]>
5 */
6
7 /*\
8 * [Description]
9 *
10 * Verify that munlockall(2) unlocks all previously locked memory.
11 */
12
13 #include <sys/mman.h>
14
15 #include "tst_test.h"
16
verify_munlockall(void)17 static void verify_munlockall(void)
18 {
19 unsigned long size = 0;
20
21 SAFE_FILE_LINES_SCANF("/proc/self/status", "VmLck: %ld", &size);
22
23 if (size != 0UL)
24 tst_brk(TBROK, "Locked memory after init should be 0 but is %ld", size);
25
26 if (mlockall(MCL_CURRENT | MCL_FUTURE) != 0)
27 tst_brk(TBROK | TERRNO, "Could not lock memory using mlockall()");
28
29 SAFE_FILE_LINES_SCANF("/proc/self/status", "VmLck: %ld", &size);
30
31 if (size == 0UL)
32 tst_brk(TBROK, "Locked memory after mlockall() should be > 0");
33
34 TST_EXP_PASS(munlockall(), "Unlock memory using munlockall()");
35
36 SAFE_FILE_LINES_SCANF("/proc/self/status", "VmLck: %ld", &size);
37
38 if (size != 0UL)
39 tst_res(TFAIL, "Locked memory after munlockall() should be 0 but is %ld", size);
40 else
41 tst_res(TPASS, "Memory successfully locked and unlocked");
42 }
43
44 static struct tst_test test = {
45 .test_all = verify_munlockall,
46 };
47