From patchwork Thu Oct 13 13:47:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Gongyi X-Patchwork-Id: 1689585 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 4Mp9sb2WQVz23jn for ; Fri, 14 Oct 2022 00:51:14 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 07FED3CAED8 for ; Thu, 13 Oct 2022 15:51:11 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [IPv6:2001:4b78:1:20::7]) (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 AFDD83CA9C7 for ; Thu, 13 Oct 2022 15:51:08 +0200 (CEST) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-7.smtp.seeweb.it (Postfix) with ESMTPS id 32553200C3E for ; Thu, 13 Oct 2022 15:51:07 +0200 (CEST) Received: from canpemm500005.china.huawei.com (unknown [172.30.72.57]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4Mp9ng5c7lzpVsL for ; Thu, 13 Oct 2022 21:47:51 +0800 (CST) Received: from ubuntu1804.huawei.com (10.67.174.63) by canpemm500005.china.huawei.com (7.192.104.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 13 Oct 2022 21:51:03 +0800 To: Date: Thu, 13 Oct 2022 21:47:25 +0800 Message-ID: <20221013134728.49609-3-zhaogongyi@huawei.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221013134728.49609-1-zhaogongyi@huawei.com> References: <20221013134728.49609-1-zhaogongyi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.63] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To canpemm500005.china.huawei.com (7.192.104.229) X-CFilter-Loop: Reflected X-Virus-Scanned: clamav-milter 0.102.4 at in-7.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.0 required=7.0 tests=SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-7.smtp.seeweb.it Subject: [LTP] [PATCH v4 1/4] syscalls/madvise04: new test for madvise(MADV_DONTNEED) 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: , X-Patchwork-Original-From: Zhao Gongyi via ltp From: Zhao Gongyi Reply-To: Zhao Gongyi Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Check that madvise(2) MADV_DONTNEED operation applied to Huge TLB pages successfully after kernel version 5.18, and will result in zero-fill-on-demand pages for anonymous private mappings. Signed-off-by: Zhao Gongyi --- runtest/syscalls | 1 + testcases/kernel/syscalls/madvise/.gitignore | 1 + testcases/kernel/syscalls/madvise/madvise04.c | 62 +++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 testcases/kernel/syscalls/madvise/madvise04.c -- 2.17.1 diff --git a/runtest/syscalls b/runtest/syscalls index c81764df4..eb1910cec 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -941,6 +941,7 @@ mincore04 mincore04 madvise01 madvise01 madvise02 madvise02 madvise03 madvise03 +madvise04 madvise04 madvise05 madvise05 madvise06 madvise06 madvise07 madvise07 diff --git a/testcases/kernel/syscalls/madvise/.gitignore b/testcases/kernel/syscalls/madvise/.gitignore index f4bfdfefe..db8ce47c1 100644 --- a/testcases/kernel/syscalls/madvise/.gitignore +++ b/testcases/kernel/syscalls/madvise/.gitignore @@ -1,6 +1,7 @@ /madvise01 /madvise02 /madvise03 +/madvise04 /madvise05 /madvise06 /madvise07 diff --git a/testcases/kernel/syscalls/madvise/madvise04.c b/testcases/kernel/syscalls/madvise/madvise04.c new file mode 100644 index 000000000..a970fb33e --- /dev/null +++ b/testcases/kernel/syscalls/madvise/madvise04.c @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. + * Author: Zhao Gongyi + */ + +/*\ + * [Description] + * + * Check that madvise(2) MADV_DONTNEED operation applied to Huge TLB pages + * successfully after kernel version 5.18, and will result in + * zero-fill-on-demand pages for anonymous private mappings. + */ + +#include "tst_test.h" + +#define MAP_SIZE (8 * 1024) + +static char *addr; +static int mapsz; + +static void run(void) +{ + TST_EXP_PASS(madvise(addr, mapsz, MADV_DONTNEED)); + for (int i = 0; i < mapsz; i++) { + if (addr[i]) { + tst_res(TFAIL, + "There are no zero-fill-on-demand pages " + "for anonymous private mappings"); + return; + } + } + + tst_res(TPASS, "There are zero-fill-on-demand pages " + "for anonymous private mappings"); +} + +static void setup(void) +{ + mapsz = tst_get_hugepage_size(); + addr = SAFE_MMAP(NULL, mapsz, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB, + -1, 0); + memset(addr, 1, mapsz); +} + +static void cleanup(void) +{ + if (addr) + SAFE_MUNMAP(addr, mapsz); +} + +static struct tst_test test = { + .test_all = run, + .setup = setup, + .cleanup = cleanup, + .min_kver = "5.18", + .needs_root = 1, + .hugepages = {1, TST_NEEDS}, +}; + From patchwork Thu Oct 13 13:47:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Gongyi X-Patchwork-Id: 1689587 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 4Mp9sz6mSRz23jn for ; Fri, 14 Oct 2022 00:51:35 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 395AD3CAEC7 for ; Thu, 13 Oct 2022 15:51:33 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [IPv6:2001:4b78:1:20::5]) (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 24AE73CA9C7 for ; Thu, 13 Oct 2022 15:51:09 +0200 (CEST) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id 11CF9600E49 for ; Thu, 13 Oct 2022 15:51:08 +0200 (CEST) Received: from canpemm500005.china.huawei.com (unknown [172.30.72.54]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4Mp9m44YkJzmVFc for ; Thu, 13 Oct 2022 21:46:28 +0800 (CST) Received: from ubuntu1804.huawei.com (10.67.174.63) by canpemm500005.china.huawei.com (7.192.104.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 13 Oct 2022 21:51:04 +0800 To: Date: Thu, 13 Oct 2022 21:47:26 +0800 Message-ID: <20221013134728.49609-4-zhaogongyi@huawei.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221013134728.49609-1-zhaogongyi@huawei.com> References: <20221013134728.49609-1-zhaogongyi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.63] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To canpemm500005.china.huawei.com (7.192.104.229) X-CFilter-Loop: Reflected X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.0 required=7.0 tests=SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v4 2/4] syscalls/madvise11: new test for madvise(MADV_DONTNEED) 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: , X-Patchwork-Original-From: Zhao Gongyi via ltp From: Zhao Gongyi Reply-To: Zhao Gongyi Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Check that madvise(2) MADV_DONTNEED applied to shared mappings will lead to the resident set size(RSS) of the calling process reduced immediately. Signed-off-by: Zhao Gongyi --- runtest/syscalls | 1 + testcases/kernel/syscalls/madvise/.gitignore | 1 + testcases/kernel/syscalls/madvise/madvise11.c | 82 +++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 testcases/kernel/syscalls/madvise/madvise11.c -- 2.17.1 diff --git a/runtest/syscalls b/runtest/syscalls index eb1910cec..296af9f9d 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -948,6 +948,7 @@ madvise07 madvise07 madvise08 madvise08 madvise09 madvise09 madvise10 madvise10 +madvise11 madvise11 newuname01 newuname01 diff --git a/testcases/kernel/syscalls/madvise/.gitignore b/testcases/kernel/syscalls/madvise/.gitignore index db8ce47c1..ffd8823d1 100644 --- a/testcases/kernel/syscalls/madvise/.gitignore +++ b/testcases/kernel/syscalls/madvise/.gitignore @@ -8,3 +8,4 @@ /madvise08 /madvise09 /madvise10 +/madvise11 diff --git a/testcases/kernel/syscalls/madvise/madvise11.c b/testcases/kernel/syscalls/madvise/madvise11.c new file mode 100644 index 000000000..0132c091c --- /dev/null +++ b/testcases/kernel/syscalls/madvise/madvise11.c @@ -0,0 +1,82 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. + * Author: Zhao Gongyi + */ + +/*\ + * [Description] + * + * Check that madvise(2) MADV_DONTNEED applied to shared mappings will lead to + * the resident set size(RSS) of the calling process reduced immediately. + */ + +#include +#include +#include "tst_test.h" + +#define MAP_SIZE (8 * 1024) +#define BUF_SIZE 1024 + +static FILE *fp; +static char *addr; + +static void run(void) +{ + char cmd[BUF_SIZE]; + char line[BUF_SIZE]; + char vm_area_addr[128]; + + TEST(madvise(addr, MAP_SIZE, MADV_DONTNEED)); + if (TST_RET == -1) { + tst_brk(TBROK | TTERRNO, "madvise(%p, %d, 0x%x) failed", + addr, MAP_SIZE, MADV_DONTNEED); + } + + sprintf(vm_area_addr, "%p", addr); + sprintf(cmd, "cat /proc/%d/smaps", getpid()); + fp = popen(cmd, "r"); + + /* Find the vm area */ + while (fgets(line, sizeof(line), fp) != NULL) { + if (strstr(line, &(vm_area_addr[2]))) + break; + } + + /* Find Rss size of the vm area */ + while (fgets(line, sizeof(line), fp) != NULL) { + if (strstr(line, "Rss:")) { + if (strstr(line, " 0 kB")) + tst_res(TPASS, "RSS is released"); + else + tst_res(TFAIL, "RSS is not released"); + return; + } + } + + tst_brk(TBROK, "There is no 'Rss:' or vm_area %p in smaps?", addr); +} + +static void setup(void) +{ + addr = SAFE_MMAP(NULL, MAP_SIZE, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, + -1, 0); + memset(addr, 1, MAP_SIZE); +} + +static void cleanup(void) +{ + if (addr) + SAFE_MUNMAP(addr, MAP_SIZE); + if (fp) + pclose(fp); +} + +static struct tst_test test = { + .test_all = run, + .setup = setup, + .cleanup = cleanup, +}; + From patchwork Thu Oct 13 13:47:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Gongyi X-Patchwork-Id: 1689589 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)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Mp9tR5dChz23jn for ; Fri, 14 Oct 2022 00:51:59 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id D7E193CAED3 for ; Thu, 13 Oct 2022 15:51:56 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [IPv6:2001:4b78:1:20::5]) (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 8792F3CAED2 for ; Thu, 13 Oct 2022 15:51:10 +0200 (CEST) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id 64389600E49 for ; Thu, 13 Oct 2022 15:51:09 +0200 (CEST) Received: from canpemm500005.china.huawei.com (unknown [172.30.72.57]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4Mp9mF3z6PzVhtq for ; Thu, 13 Oct 2022 21:46:37 +0800 (CST) Received: from ubuntu1804.huawei.com (10.67.174.63) by canpemm500005.china.huawei.com (7.192.104.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 13 Oct 2022 21:51:05 +0800 To: Date: Thu, 13 Oct 2022 21:47:27 +0800 Message-ID: <20221013134728.49609-5-zhaogongyi@huawei.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221013134728.49609-1-zhaogongyi@huawei.com> References: <20221013134728.49609-1-zhaogongyi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.63] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To canpemm500005.china.huawei.com (7.192.104.229) X-CFilter-Loop: Reflected X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.0 required=7.0 tests=SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v4 3/4] syscalls/madvise12: new test for madvise(MADV_REMOVE) 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: , X-Patchwork-Original-From: Zhao Gongyi via ltp From: Zhao Gongyi Reply-To: Zhao Gongyi Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Check that after a successful madvise(2) MADV_REMOVE operation, subsequent accesses in the specified address range will see bytes containing zero. Signed-off-by: Zhao Gongyi --- runtest/syscalls | 1 + testcases/kernel/syscalls/madvise/.gitignore | 1 + testcases/kernel/syscalls/madvise/madvise12.c | 85 +++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 testcases/kernel/syscalls/madvise/madvise12.c -- 2.17.1 diff --git a/runtest/syscalls b/runtest/syscalls index 296af9f9d..0697b31ab 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -949,6 +949,7 @@ madvise08 madvise08 madvise09 madvise09 madvise10 madvise10 madvise11 madvise11 +madvise12 madvise12 newuname01 newuname01 diff --git a/testcases/kernel/syscalls/madvise/.gitignore b/testcases/kernel/syscalls/madvise/.gitignore index ffd8823d1..dc82c82bd 100644 --- a/testcases/kernel/syscalls/madvise/.gitignore +++ b/testcases/kernel/syscalls/madvise/.gitignore @@ -9,3 +9,4 @@ /madvise09 /madvise10 /madvise11 +/madvise12 diff --git a/testcases/kernel/syscalls/madvise/madvise12.c b/testcases/kernel/syscalls/madvise/madvise12.c new file mode 100644 index 000000000..7c22e464d --- /dev/null +++ b/testcases/kernel/syscalls/madvise/madvise12.c @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. + * Author: Zhao Gongyi + */ + +/*\ + * [Description] + * + * Check that after a successful madvise(2) MADV_REMOVE operation, subsequent + * accesses in the specified address range will see bytes containing zero. + */ + +#define _GNU_SOURCE +#include +#include "tst_test.h" + +#define MAP_SIZE (8 * 1024) +#define FNAME "madvise_remove" +#define MOUNT_POINT "mntpoint" + +static char *addr; +static int fd; + +static void run(void) +{ + TEST(madvise(addr, MAP_SIZE, MADV_REMOVE)); + if (TST_RET == -1) { + if (TST_ERR == EOPNOTSUPP) + tst_brk(TCONF, "'MADV_REMOVE' not supported?"); + else { + tst_res(TFAIL | TTERRNO, "madvise(%p, %d, 0x%x) failed", + addr, MAP_SIZE, MADV_REMOVE); + return; + } + } + + for (int i = 0; i < MAP_SIZE; i++) { + if (addr[0]) { + tst_res(TFAIL, + "The content of mapping memory is not removed"); + return; + } + } + + tst_res(TPASS, "The content of mapping memory is removed"); +} + +static void setup(void) +{ + fd = SAFE_OPEN(FNAME, O_CREAT | O_RDWR, 0777); + TEST(fallocate(fd, 0, 0, MAP_SIZE)); + if (TST_RET) { + if (TST_ERR == ENOSYS || TST_ERR == EOPNOTSUPP) + tst_brk(TCONF, "fallocate not support"); + else + tst_brk(TBROK | TERRNO, "fallocate failed"); + } + + addr = SAFE_MMAP(NULL, MAP_SIZE, + PROT_READ | PROT_WRITE, + MAP_SHARED, + fd, 0); + memset(addr, 1, MAP_SIZE); +} + +static void cleanup(void) +{ + SAFE_CLOSE(fd); + SAFE_UNLINK(FNAME); + if (addr) + SAFE_MUNMAP(addr, MAP_SIZE); +} + +static struct tst_test test = { + .test_all = run, + .needs_root = 1, + .min_kver = "2.6.16", + .setup = setup, + .cleanup = cleanup, + .all_filesystems = 1, + .mount_device = 1, + .mntpoint = MOUNT_POINT, +}; + From patchwork Thu Oct 13 13:47:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Gongyi X-Patchwork-Id: 1689590 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)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Mp9tf3Rdwz23jn for ; Fri, 14 Oct 2022 00:52:10 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id CC8073CA9C7 for ; Thu, 13 Oct 2022 15:52:07 +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 CB8B23CAED8 for ; Thu, 13 Oct 2022 15:51:10 +0200 (CEST) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id C410010009A3 for ; Thu, 13 Oct 2022 15:51:09 +0200 (CEST) Received: from canpemm500005.china.huawei.com (unknown [172.30.72.56]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4Mp9mG4mR7zVhvR for ; Thu, 13 Oct 2022 21:46:38 +0800 (CST) Received: from ubuntu1804.huawei.com (10.67.174.63) by canpemm500005.china.huawei.com (7.192.104.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 13 Oct 2022 21:51:06 +0800 To: Date: Thu, 13 Oct 2022 21:47:28 +0800 Message-ID: <20221013134728.49609-6-zhaogongyi@huawei.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221013134728.49609-1-zhaogongyi@huawei.com> References: <20221013134728.49609-1-zhaogongyi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.63] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To canpemm500005.china.huawei.com (7.192.104.229) X-CFilter-Loop: Reflected X-Virus-Scanned: clamav-milter 0.102.4 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.0 required=7.0 tests=SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-4.smtp.seeweb.it Subject: [LTP] [PATCH v4 4/4] syscalls/madvise13: new test for madvise(MADV_REMOVE) 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: , X-Patchwork-Original-From: Zhao Gongyi via ltp From: Zhao Gongyi Reply-To: Zhao Gongyi Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Check that the specified address range must be mapped shared and writable and this flag cannot be applied to locked pages. Signed-off-by: Zhao Gongyi Reviewed-by: Richard Palethorpe --- runtest/syscalls | 1 + testcases/kernel/syscalls/madvise/.gitignore | 1 + testcases/kernel/syscalls/madvise/madvise13.c | 80 +++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 testcases/kernel/syscalls/madvise/madvise13.c -- 2.17.1 diff --git a/runtest/syscalls b/runtest/syscalls index 0697b31ab..bd74373a4 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -950,6 +950,7 @@ madvise09 madvise09 madvise10 madvise10 madvise11 madvise11 madvise12 madvise12 +madvise13 madvise13 newuname01 newuname01 diff --git a/testcases/kernel/syscalls/madvise/.gitignore b/testcases/kernel/syscalls/madvise/.gitignore index dc82c82bd..fcf04c749 100644 --- a/testcases/kernel/syscalls/madvise/.gitignore +++ b/testcases/kernel/syscalls/madvise/.gitignore @@ -10,3 +10,4 @@ /madvise10 /madvise11 /madvise12 +/madvise13 diff --git a/testcases/kernel/syscalls/madvise/madvise13.c b/testcases/kernel/syscalls/madvise/madvise13.c new file mode 100644 index 000000000..15b17a6a8 --- /dev/null +++ b/testcases/kernel/syscalls/madvise/madvise13.c @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. + * Author: Zhao Gongyi + */ + +/*\ + * [Description] + * + * Check that in madvise(2) MADV_REMOVE operation, the specified address + * range must be mapped shared and writable and this flag cannot be applied + * to locked pages. + */ + +#define _GNU_SOURCE +#include +#include "tst_test.h" + +#define MAP_SIZE (8 * 1024) +#define FNAME "madvise_remove" +#define MOUNT_POINT "mntpoint" + +static int fd; +static struct tcase { + int prot; + int flags; + int exp; + int err; +} tcases[] = { + {PROT_READ, MAP_PRIVATE, -1, EACCES}, + {PROT_READ, MAP_PRIVATE | MAP_LOCKED, -1, EINVAL}, + {PROT_READ, MAP_SHARED, -1, EACCES}, + {PROT_READ, MAP_SHARED | MAP_LOCKED, -1, EINVAL}, + {PROT_WRITE, MAP_PRIVATE, -1, EACCES}, + {PROT_WRITE, MAP_PRIVATE | MAP_LOCKED, -1, EINVAL}, + {PROT_WRITE, MAP_SHARED | MAP_LOCKED, -1, EINVAL}, + {PROT_WRITE, MAP_SHARED, 0, 0}, + {PROT_WRITE | PROT_READ, MAP_SHARED, 0, 0}, +}; + + +static void run(unsigned int i) +{ + char *addr = SAFE_MMAP(NULL, MAP_SIZE, + tcases[i].prot, + tcases[i].flags, + fd, 0); + + if (tcases[i].exp) + TST_EXP_FAIL(madvise(addr, MAP_SIZE, MADV_REMOVE), + tcases[i].err); + else + TST_EXP_PASS(madvise(addr, MAP_SIZE, MADV_REMOVE)); + + SAFE_MUNMAP(addr, MAP_SIZE); +} + +static void setup(void) +{ + fd = SAFE_OPEN(FNAME, O_CREAT | O_RDWR, 0777); +} + +static void cleanup(void) +{ + SAFE_CLOSE(fd); + SAFE_UNLINK(FNAME); +} + +static struct tst_test test = { + .needs_root = 1, + .tcnt = ARRAY_SIZE(tcases), + .test = run, + .min_kver = "2.6.16", + .setup = setup, + .cleanup = cleanup, + .all_filesystems = 1, + .mntpoint = MOUNT_POINT, + .mount_device = 1, +}; +