Message ID | c63c49c3-30e8-494d-9ceb-64fc55060e1f@redhat.com |
---|---|
State | Changes Requested |
Headers | show |
Series | [v1] munlockall: add test case that verifies memory has been unlocked | expand |
Hi! Generally this is much better test than the munlockall01.c so it would make more sense to replace munlockall01.c instead of adding a new test. > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * Copyright Red Hat > + * Author: Dennis Brendel <dbrendel@redhat.com> > + */ > + > +/* This should be docparse comment, i.e. start with /*\ so that it's picked up with the documentation parser. > + * [Description] > + * > + * Verify that munlockall(2) unlocks all previously locked memory > + */ > + > +#include <sys/mman.h> > + > +#include "tst_test.h" > + > +static void verify_munlockall(void) > +{ > + unsigned long int size = 0; > + > + SAFE_FILE_LINES_SCANF("/proc/self/status", "VmLck: %ld", &size); > + > + if (size != 0UL) { > + tst_res(TFAIL, "Locked memory after init should be 0 " > + "but is %ld", size); > + } > + > + if (mlockall(MCL_CURRENT | MCL_FUTURE) != 0) { > + tst_res(TFAIL, "Could not lock memory using mlockall()"); > + } > + > + SAFE_FILE_LINES_SCANF("/proc/self/status", "VmLck: %ld", &size); > + > + if (size == 0UL) { > + tst_res(TFAIL, "Locked memory after mlockall() should be greater " > + "than 0, but is %ld", size); > + } > + > + if (munlockall() != 0) { > + tst_res(TFAIL, "Could not unlock memory using munlockall()"); > + } > + > + SAFE_FILE_LINES_SCANF("/proc/self/status", "VmLck: %ld", &size); > + > + if (size != 0UL) { > + tst_res(TFAIL, "Locked memory after munlockall() should be 0 " > + "but is %ld", size); > + } else { > + tst_res(TPASS, "Test passed"); > + } This obviously does not work, you have to either return from the function after each tst_res(TFAIL, ""); or set a flag and print TPASS only if the flag wasn't set. > +} > + > +static struct tst_test test = { > + .test_all = verify_munlockall, > +}; Also have you checked the test with 'make check' before sending the patch?
diff --git a/testcases/kernel/syscalls/munlockall/munlockall02.c b/testcases/kernel/syscalls/munlockall/munlockall02.c new file mode 100644 index 000000000..53d64d47e --- /dev/null +++ b/testcases/kernel/syscalls/munlockall/munlockall02.c @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright Red Hat + * Author: Dennis Brendel <dbrendel@redhat.com> + */ + +/* + * [Description] + * + * Verify that munlockall(2) unlocks all previously locked memory + */ + +#include <sys/mman.h> + +#include "tst_test.h" + +static void verify_munlockall(void) +{ + unsigned long int size = 0; + + SAFE_FILE_LINES_SCANF("/proc/self/status", "VmLck: %ld", &size); + + if (size != 0UL) { + tst_res(TFAIL, "Locked memory after init should be 0 " + "but is %ld", size); + } + + if (mlockall(MCL_CURRENT | MCL_FUTURE) != 0) { + tst_res(TFAIL, "Could not lock memory using mlockall()"); + } + + SAFE_FILE_LINES_SCANF("/proc/self/status", "VmLck: %ld", &size); + + if (size == 0UL) { + tst_res(TFAIL, "Locked memory after mlockall() should be greater " + "than 0, but is %ld", size); + } + + if (munlockall() != 0) { + tst_res(TFAIL, "Could not unlock memory using munlockall()"); + } + + SAFE_FILE_LINES_SCANF("/proc/self/status", "VmLck: %ld", &size); + + if (size != 0UL) { + tst_res(TFAIL, "Locked memory after munlockall() should be 0 " + "but is %ld", size); + } else { + tst_res(TPASS, "Test passed"); + } +} + +static struct tst_test test = { + .test_all = verify_munlockall, +};