From patchwork Fri Jun 2 09:53:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yang Xu \\(Fujitsu\\)" X-Patchwork-Id: 1789545 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QXdd11Zwpz20WV for ; Fri, 2 Jun 2023 19:54:13 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 17BFF3CCE48 for ; Fri, 2 Jun 2023 11:54:10 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [IPv6:2001:4b78:1:20::4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id C433A3CCDD8 for ; Fri, 2 Jun 2023 11:54:08 +0200 (CEST) Received: from esa6.hc1455-7.c3s2.iphmx.com (esa6.hc1455-7.c3s2.iphmx.com [68.232.139.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id B25A910009A0 for ; Fri, 2 Jun 2023 11:54:06 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6600,9927,10728"; a="120401583" X-IronPort-AV: E=Sophos;i="6.00,212,1681138800"; d="scan'208";a="120401583" Received: from unknown (HELO yto-r4.gw.nic.fujitsu.com) ([218.44.52.220]) by esa6.hc1455-7.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2023 18:54:05 +0900 Received: from yto-m2.gw.nic.fujitsu.com (yto-nat-yto-m2.gw.nic.fujitsu.com [192.168.83.65]) by yto-r4.gw.nic.fujitsu.com (Postfix) with ESMTP id 13C1BD3EA3 for ; Fri, 2 Jun 2023 18:54:03 +0900 (JST) Received: from aks-ab1.gw.nic.fujitsu.com (aks-ab1.gw.nic.fujitsu.com [192.51.207.11]) by yto-m2.gw.nic.fujitsu.com (Postfix) with ESMTP id 48B08D67D1 for ; Fri, 2 Jun 2023 18:54:02 +0900 (JST) Received: from localhost.localdomain (unknown [10.167.215.131]) by aks-ab1.gw.nic.fujitsu.com (Postfix) with ESMTP id 577572FC8341; Fri, 2 Jun 2023 18:54:01 +0900 (JST) From: Yang Xu To: ltp@lists.linux.it Date: Fri, 2 Jun 2023 17:53:50 +0800 Message-Id: <1685699631-4671-1-git-send-email-xuyang2018.jy@fujitsu.com> X-Mailer: git-send-email 1.8.3.1 X-TM-AS-GCONF: 00 X-TM-AS-Product-Ver: IMSS-9.1.0.1408-9.0.0.1002-27666.006 X-TM-AS-User-Approved-Sender: Yes X-TMASE-Version: IMSS-9.1.0.1408-9.0.1002-27666.006 X-TMASE-Result: 10--20.884000-10.000000 X-TMASE-MatchedRID: t1TP0uXPV06hhjsqgSuNbxF4zyLyne+AVBDQSDMig9EnyU5/nZpxUL4q 7wkSW5bKbnRB47KLJ1QzLmfGY6iDkYF+91Q/EzGtN70wXhI0DX4yhLY8urUHvmvlGb+24NaZuJE UmdYPGSVrPg89NCqC9syK5YNF2aor/r2K6wdIm9/X3j/lf1V8LD92Og3IOZltS1jK4vkKprHE68 3wZxeesm5/m6vlvI+luGvA9nymq1lDQYe+1GQPNfCCu8kVj0TRgbNN0R684zOKso3EN6f9DAtgH DHbgC1ShthwNVVpqbC3xElUZX+x22+w5IlbLL18dXu122+iJtosYZ+FvRRQ3Z8SKrzgiUxNa0IE kYOsokUYnaS0r6Dt+K69+qEZoIxB0FQxfjRHOzieAiCmPx4NwBnUJ0Ek6yhjxEHRux+uk8jpP8t MOyYmaA== X-TMASE-SNAP-Result: 1.821001.0001-0-1-22:0,33:0,34:0-0 X-Virus-Scanned: clamav-milter 1.0.1 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=-0.0 required=7.0 tests=SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE shortcircuit=no autolearn=disabled version=4.0.0 X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on in-4.smtp.seeweb.it Subject: [LTP] [PATCH 1/2] syscalls/munlock01: Convert into new api X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Signed-off-by: Yang Xu Reviewed-by: Li Wang --- testcases/kernel/syscalls/munlock/munlock01.c | 181 ++++-------------- 1 file changed, 35 insertions(+), 146 deletions(-) diff --git a/testcases/kernel/syscalls/munlock/munlock01.c b/testcases/kernel/syscalls/munlock/munlock01.c index 8a52f032d..31d749e66 100644 --- a/testcases/kernel/syscalls/munlock/munlock01.c +++ b/testcases/kernel/syscalls/munlock/munlock01.c @@ -1,162 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) Wipro Technologies Ltd, 2002. All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * + * AUTHOR: Nirmala Devi Dhanasekar */ -/************************************************************************** - * - * TEST IDENTIFIER : munlock01 - * - * EXECUTED BY : root / superuser - * - * TEST TITLE : Basic test for munlock(2) - * - * TEST CASE TOTAL : 4 - * - * AUTHOR : Nirmala Devi Dhanasekar - * - * SIGNALS - * Uses SIGUSR1 to pause before test if option set. - * (See the parse_opts(3) man page). - * - * DESCRIPTION - * This is a Phase I test for the munlock(2) system call. - * It is intended to provide a limited exposure of the system call. - * - * Setup: - * Setup signal handling. - * Pause for SIGUSR1 if option specified. - * - * Test: - * Loop if the proper options are given. - * Execute system call - * Check return code, if system call failed (return=-1) - * Log the errno and Issue a FAIL message. - * Otherwise, Issue a PASS message. - * - * Cleanup: - * Print errno log and/or timing stats if options given - * - * USAGE: - * munlock01 [-c n] [-e] [-i n] [-I x] [-p x] [-t] - * where, -c n : Run n copies concurrently - * -e : Turn on errno logging. - * -h : Show this help screen - * -i n : Execute test n times. - * -I x : Execute test for x seconds. - * -p : Pause for SIGUSR1 before starting - * -P x : Pause for x seconds between iterations. - * -t : Turn on syscall timing. - * - * RESTRICTIONS - * Must be root/superuser to run it. - *****************************************************************************/ - -#include -#include -#include -#include "test.h" -void setup(); -void setup1(int); -void cleanup(); +/*\ + * [Description] + * + * Test munlock with various valid addresses and lengths. + */ -char *TCID = "munlock01"; -int TST_TOTAL = 4; +#include +#include "tst_test.h" -void *addr1; +static void *addr; -struct test_case_t { - void **addr; +static struct tcase { + char *msg; int len; - void (*setupfunc) (); -} TC[] = { - { - &addr1, 1, setup1}, { - &addr1, 1024, setup1}, { - &addr1, 1024 * 1024, setup1}, { - &addr1, 1024 * 1024 * 10, setup1} +} tcases[] = { + {"munlock 1 byte", 1}, + {"munlock 1024 bytes", 1024}, + {"munlock 1024 * 1024 bytes", 1024 * 1024}, + {"munlock 1024 * 1024 * 10 bytes", 1024 * 1024 * 10} }; -int main(int ac, char **av) -{ - int lc, i; - - tst_parse_opts(ac, av, NULL, NULL); - - setup(); - - /* check looping state */ - for (lc = 0; TEST_LOOPING(lc); lc++) { - - tst_count = 0; - - for (i = 0; i < TST_TOTAL; i++) { - - if (TC[i].setupfunc != NULL) - TC[i].setupfunc(i); - - TEST(munlock(*(TC[i].addr), TC[i].len)); - - /* check return code */ - if (TEST_RETURN == -1) { - tst_resm(TFAIL | TTERRNO, - "mlock(%p, %d) Failed with " - "return=%ld", TC[i].addr, TC[i].len, - TEST_RETURN); - } else { - tst_resm(TPASS, "test %d passed length = %d", - i, TC[i].len); - } - } - } - - /* cleanup and exit */ - cleanup(); - - tst_exit(); -} - -void setup1(int i) +static void verify_munlock(unsigned int i) { - addr1 = malloc(TC[i].len); - if (addr1 == NULL) - tst_brkm(TFAIL, cleanup, "malloc failed"); - TEST(mlock(*(TC[i].addr), TC[i].len)); - - /* check return code */ - if (TEST_RETURN == -1) { - tst_brkm(TFAIL | TTERRNO, cleanup, - "mlock(%p, %d) Failed with return=%ld", TC[i].addr, - TC[i].len, TEST_RETURN); - } + struct tcase *tc = &tcases[i]; + + tst_res(TINFO, "%s", tc->msg); + addr = SAFE_MALLOC(tc->len); + SAFE_MLOCK(addr, tc->len); + TST_EXP_PASS(munlock(addr, tc->len), "munlock(%p, %d)", addr, tc->len); + free(addr); + addr = NULL; } -/* setup() - performs all ONE TIME setup for this test. */ -void setup(void) +static void cleanup(void) { - tst_require_root(); - - tst_sig(NOFORK, DEF_HANDLER, cleanup); - - TEST_PAUSE; + if (addr) + free(addr); } -/* - * cleanup() - performs all ONE TIME cleanup for this test at - * completion or premature exit. - */ -void cleanup(void) -{ -} +static struct tst_test test = { + .needs_root = 1, + .test = verify_munlock, + .tcnt = ARRAY_SIZE(tcases), + .cleanup = cleanup, +}; From patchwork Fri Jun 2 09:53:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yang Xu \\(Fujitsu\\)" X-Patchwork-Id: 1789547 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QXddk0M60z20WV for ; Fri, 2 Jun 2023 19:54:50 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 2EE683CCE4C for ; Fri, 2 Jun 2023 11:54:44 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-3.smtp.seeweb.it (in-3.smtp.seeweb.it [217.194.8.3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 222FA3CCDD8 for ; Fri, 2 Jun 2023 11:54:42 +0200 (CEST) Received: from esa1.hc1455-7.c3s2.iphmx.com (esa1.hc1455-7.c3s2.iphmx.com [207.54.90.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-3.smtp.seeweb.it (Postfix) with ESMTPS id 520A81A00439 for ; Fri, 2 Jun 2023 11:54:40 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6600,9927,10728"; a="119122168" X-IronPort-AV: E=Sophos;i="6.00,212,1681138800"; d="scan'208";a="119122168" Received: from unknown (HELO oym-r2.gw.nic.fujitsu.com) ([210.162.30.90]) by esa1.hc1455-7.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2023 18:54:39 +0900 Received: from oym-m3.gw.nic.fujitsu.com (oym-nat-oym-m3.gw.nic.fujitsu.com [192.168.87.60]) by oym-r2.gw.nic.fujitsu.com (Postfix) with ESMTP id A219DD424F for ; Fri, 2 Jun 2023 18:54:36 +0900 (JST) Received: from aks-ab1.gw.nic.fujitsu.com (aks-ab1.gw.nic.fujitsu.com [192.51.207.11]) by oym-m3.gw.nic.fujitsu.com (Postfix) with ESMTP id C59F9D9A8B for ; Fri, 2 Jun 2023 18:54:35 +0900 (JST) Received: from localhost.localdomain (unknown [10.167.215.131]) by aks-ab1.gw.nic.fujitsu.com (Postfix) with ESMTP id EEF732FC8341; Fri, 2 Jun 2023 18:54:34 +0900 (JST) From: Yang Xu To: ltp@lists.linux.it Date: Fri, 2 Jun 2023 17:53:51 +0800 Message-Id: <1685699631-4671-2-git-send-email-xuyang2018.jy@fujitsu.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1685699631-4671-1-git-send-email-xuyang2018.jy@fujitsu.com> References: <1685699631-4671-1-git-send-email-xuyang2018.jy@fujitsu.com> X-TM-AS-GCONF: 00 X-TM-AS-Product-Ver: IMSS-9.1.0.1408-9.0.0.1002-27666.006 X-TM-AS-User-Approved-Sender: Yes X-TMASE-Version: IMSS-9.1.0.1408-9.0.1002-27666.006 X-TMASE-Result: 10--24.658100-10.000000 X-TMASE-MatchedRID: gfPLl/E7ZuUKK0r2G9VU7k7nLUqYrlslFIuBIWrdOeOU8ftiyKjZreCG 89wh97wnaj3ypNjZX+1WTBAeKqaX9Spe4ofkluPsqug9vIA2WODZobCTg4s1LL54YCapH5tAXsR 1Vlexc+/4XJPAGTaiPAeWR71HtRmwaEsmopAJRAldhZyafgPiqzEvENg7dSUMUYkZd9+4t296+4 Y3holm5YnfCN7LFTxDeoRDfBlv2T/Ko0CaSbP6EDz6L+U/pejxtOtXYgbXjdfG5dXdQTj2OFRG1 tpaU7lUwR5/YsCEtnP+7Vem91xE3wZhlKhs1jTDSs47mbT7SASOVGny5q72hjzNRqQN9SIrZEh6 0BrOMi1tqA7rUOit0yDLhawxlpdkVPVUF2N3LyOGp0fwr2DvF3O1oaQ51CuNd/Ex8BlUR52bJQP XTpvU5poi4Fk1Ww9PgDLqnrRlXrZ8nn9tnqel2JBlLa6MK1y4 X-TMASE-SNAP-Result: 1.821001.0001-0-1-22:0,33:0,34:0-0 X-Virus-Scanned: clamav-milter 1.0.1 at in-3.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=-0.0 required=7.0 tests=SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE shortcircuit=no autolearn=disabled version=4.0.0 X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on in-3.smtp.seeweb.it Subject: [LTP] [PATCH 2/2] syscalls/munlock02: Convert into new api X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" 1.remove uclinux and ia64 code 2.use safe_macro macro Signed-off-by: Yang Xu Reviewed-by: Li Wang --- testcases/kernel/syscalls/munlock/munlock02.c | 212 +++--------------- 1 file changed, 31 insertions(+), 181 deletions(-) diff --git a/testcases/kernel/syscalls/munlock/munlock02.c b/testcases/kernel/syscalls/munlock/munlock02.c index 75906a1df..f51c3d21f 100644 --- a/testcases/kernel/syscalls/munlock/munlock02.c +++ b/testcases/kernel/syscalls/munlock/munlock02.c @@ -1,198 +1,48 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) Wipro Technologies Ltd, 2002. All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * + * AUTHOR: Nirmala Devi Dhanasekar */ -/************************************************************************** - * - * TEST IDENTIFIER : munlock02 - * - * EXECUTED BY : root / superuser - * - * TEST TITLE : Test for checking basic error conditions for - * munlock(2) - * - * TEST CASE TOTAL : 2 - * - * AUTHOR : Nirmala Devi Dhanasekar - * - * SIGNALS - * Uses SIGUSR1 to pause before test if option set. - * (See the parse_opts(3) man page). - * - * DESCRIPTION - * Check for basic errors returned by munlock(2) system call. - * - * Verify that munlock(2) returns -1 and sets errno to - * - * 1) ENOMEM - Some of the specified address range does not correspond to - * mapped pages in the address space of the process. - * - * Setup: - * Setup signal handling. - * Pause for SIGUSR1 if option specified. - * - * Test: - * Loop if the proper options are given. - * Do necessary setup for each test. - * Execute system call - * Check return code, if system call failed (return=-1) - * Log the errno and Issue a FAIL message. - * Otherwise, Issue a PASS message. - * - * Cleanup: - * Print errno log and/or timing stats if options given + +/*\ + * [Description] * - * USAGE: - * munlock02 [-c n] [-e] [-i n] [-I x] [-p x] [-t] - * where, -c n : Run n copies concurrently - * -e : Turn on errno logging. - * -h : Show this help screen - * -i n : Execute test n times. - * -I x : Execute test for x seconds. - * -p : Pause for SIGUSR1 before starting - * -P x : Pause for x seconds between iterations. - * -t : Turn on syscall timing. + * Test for ENOMEM error. * - * RESTRICTIONS - * Test must run as root. - *****************************************************************************/ -#include -#include -#include -#include -#include "test.h" - -void setup(); -void cleanup(); - -char *TCID = "munlock02"; -int TST_TOTAL = 1; - -#define LEN 1024 - -void *addr1; + * munlock(2) fails with ENOMEM if some of the specified address range + * does not correspond to mapped pages in the address space of the + * process. + */ -struct test_case_t { - void *addr; - int len; - int error; - char *edesc; -} TC[] = { - { -NULL, 0, ENOMEM, "address range out of address space"},}; +#include +#include "tst_test.h" -#if !defined(UCLINUX) +static size_t len, pg_size; +static void *addr; -int main(int ac, char **av) +static void run(void) { - int lc, i; - - tst_parse_opts(ac, av, NULL, NULL); - - setup(); - - /* check looping state */ - for (lc = 0; TEST_LOOPING(lc); lc++) { - - tst_count = 0; - for (i = 0; i < TST_TOTAL; i++) { -#ifdef __ia64__ - TC[0].len = 8 * getpagesize(); -#endif - TEST(munlock(TC[i].addr, TC[i].len)); - - /* check return code */ - if (TEST_RETURN == -1) { - if (TEST_ERRNO != TC[i].error) - tst_brkm(TFAIL, cleanup, - "munlock() Failed with wrong " - "errno, expected errno=%s, " - "got errno=%d : %s", - TC[i].edesc, TEST_ERRNO, - strerror(TEST_ERRNO)); - else - tst_resm(TPASS, - "expected failure - errno " - "= %d : %s", - TEST_ERRNO, - strerror(TEST_ERRNO)); - } else { - tst_brkm(TFAIL, cleanup, - "munlock() Failed, expected " - "return value=-1, got %ld", - TEST_RETURN); - } - } - } - - /* cleanup and exit */ - cleanup(); - - tst_exit(); + TST_EXP_FAIL(munlock(addr, len), ENOMEM, "munlock(%p, %lu)", + addr, len); } -/* setup() - performs all ONE TIME setup for this test. */ - -void setup(void) +static void setup(void) { - - char *address; - - tst_sig(FORK, DEF_HANDLER, cleanup); - - TC[0].len = 8 * getpagesize(); - address = mmap(0, TC[0].len, PROT_READ | PROT_WRITE, - MAP_PRIVATE_EXCEPT_UCLINUX | MAP_ANONYMOUS, 0, 0); - if (address == MAP_FAILED) - tst_brkm(TFAIL, cleanup, "mmap_failed"); - memset(address, 0x20, TC[0].len); - TEST(mlock(address, TC[0].len)); - - /* check return code */ - if (TEST_RETURN == -1) { - tst_brkm(TFAIL | TTERRNO, cleanup, - "mlock(%p, %d) Failed with return=%ld", address, - TC[0].len, TEST_RETURN); - } - TC[0].addr = address; + pg_size = getpagesize(); + len = 8 * pg_size; + addr = SAFE_MMAP(NULL, len, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); + memset(addr, 0x20, len); + SAFE_MLOCK(addr, len); /* * unmap part of the area, to create the condition for ENOMEM */ - address += 2 * getpagesize(); - munmap(address, 4 * getpagesize()); - - TEST_PAUSE; - - return; -} - -#else - -int main(void) -{ - tst_resm(TINFO, "test is not available on uClinux"); - tst_exit(); + addr += 2 * pg_size; + SAFE_MUNMAP(addr, 4 * pg_size); } -#endif /* if !defined(UCLINUX) */ - -/* - * cleanup() - performs all ONE TIME cleanup for this test at - * completion or premature exit. - */ -void cleanup(void) -{ - return; -} +static struct tst_test test = { + .needs_root = 1, + .setup = setup, + .test_all = run, +};