{"id":2233409,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2233409/?format=json","web_url":"http://patchwork.ozlabs.org/project/ltp/patch/20260506113655.10797-5-mmenashe@redhat.com/","project":{"id":59,"url":"http://patchwork.ozlabs.org/api/1.1/projects/59/?format=json","name":"Linux Test Project development","link_name":"ltp","list_id":"ltp.lists.linux.it","list_email":"ltp@lists.linux.it","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260506113655.10797-5-mmenashe@redhat.com>","date":"2026-05-06T11:36:55","name":"[4/4] futex_cmp_requeue03: Add EFAULT and EACCES error coverage test","commit_ref":null,"pull_url":null,"state":"changes-requested","archived":false,"hash":"ccc48a0a0c2bff0dbb464476b51b24da55194a39","submitter":{"id":93123,"url":"http://patchwork.ozlabs.org/api/1.1/people/93123/?format=json","name":"Michael Menasherov","email":"mmenashe@redhat.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/ltp/patch/20260506113655.10797-5-mmenashe@redhat.com/mbox/","series":[{"id":502973,"url":"http://patchwork.ozlabs.org/api/1.1/series/502973/?format=json","web_url":"http://patchwork.ozlabs.org/project/ltp/list/?series=502973","date":"2026-05-06T11:36:51","name":"futex: Add error coverage tests for wait, wake and cmp_requeue","version":1,"mbox":"http://patchwork.ozlabs.org/series/502973/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2233409/comments/","check":"fail","checks":"http://patchwork.ozlabs.org/api/patches/2233409/checks/","tags":{},"headers":{"Return-Path":"<ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it>","X-Original-To":["incoming@patchwork.ozlabs.org","ltp@lists.linux.it"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","ltp@picard.linux.it"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=lists.linux.it header.i=@lists.linux.it\n header.a=rsa-sha256 header.s=picard header.b=nrcfZ2I6;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=CkOiFT3y;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it\n (client-ip=2001:1418:10:5::2; helo=picard.linux.it;\n envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it;\n receiver=patchwork.ozlabs.org)"],"Received":["from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g9YLG2NK9z1yJq\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 06 May 2026 21:38:46 +1000 (AEST)","from picard.linux.it (localhost [IPv6:::1])\n\tby picard.linux.it (Postfix) with ESMTP id 50F5D3E615C\n\tfor <incoming@patchwork.ozlabs.org>; Wed,  6 May 2026 13:38:44 +0200 (CEST)","from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it\n [IPv6:2001:4b78:1:20::7])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature ECDSA (secp384r1))\n (No client certificate requested)\n by picard.linux.it (Postfix) with ESMTPS id A04EC3E6159\n for <ltp@lists.linux.it>; Wed,  6 May 2026 13:37:09 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by in-7.smtp.seeweb.it (Postfix) with ESMTPS id 19BB1200AD7\n for <ltp@lists.linux.it>; Wed,  6 May 2026 13:37:08 +0200 (CEST)","from mail-wr1-f72.google.com (mail-wr1-f72.google.com\n [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-616-NJBUsIOONRmGQVxeLB0Ykw-1; Wed, 06 May 2026 07:37:06 -0400","by mail-wr1-f72.google.com with SMTP id\n ffacd0b85a97d-44d9ace59efso2392792f8f.1\n for <ltp@lists.linux.it>; Wed, 06 May 2026 04:37:06 -0700 (PDT)","from fedora.redhat.com (85.65.168.167.dynamic.barak-online.net.\n [85.65.168.167]) by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-45055960022sm11919938f8f.26.2026.05.06.04.37.02\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 06 May 2026 04:37:03 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=lists.linux.it;\n i=@lists.linux.it; q=dns/txt; s=picard; t=1778067524; h=to : date :\n message-id : in-reply-to : references : mime-version : subject :\n list-id : list-unsubscribe : list-archive : list-post : list-help :\n list-subscribe : from : reply-to : content-type :\n content-transfer-encoding : sender : from;\n bh=r0hBWmJS8ZoabB4RfleNIE2iO8B5EkXOTgPL7Nk3mZM=;\n b=nrcfZ2I6Oh3Oawb35pHAvob8Hs9Rc43FRafRHNPR/vYpDxaerAblrTc9DcL1KIn5U3yiW\n YVbbK6CJfKcyBSSlVc7y+5bQ9f/ikuiQbHBELdTUvd32ICTl+4QV4l6sgDtp7Jb2kNkY0sg\n fcfCBmWzKl2QsIHthFFw1Hon/ZFH+pc=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1778067427;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=CW08z9pGHyXYfeAAgPmQjnqzWN3yJZ9FozyxaxroIh8=;\n b=CkOiFT3ypEsfEyolvSiSGnEyGWlSbms7XfktJI8GAowPGAefX0dfCF0K1ofLEXKtdkOsKb\n lwZo8ChwHgim3nEBsGP18+QYs3/dFQ/DCOm14J06zB11iK+d1z7V/uUc0AkbYfrEDNe8KM\n 6QK+fptQemQbiCMPHlIAwyVIKTYddAw="],"X-MC-Unique":"NJBUsIOONRmGQVxeLB0Ykw-1","X-Mimecast-MFC-AGG-ID":"NJBUsIOONRmGQVxeLB0Ykw_1778067425","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1778067424; x=1778672224;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=CW08z9pGHyXYfeAAgPmQjnqzWN3yJZ9FozyxaxroIh8=;\n b=aKDorU8WVkprTiHEKazxJogalPTSkV84XpveQ7CgVLFPGs4xWmcwzlKzPlGmj7OLhK\n /7tLm7cFPJtKW3U70SH0U6mtgqfu/XRizAJ5kjUZRdUXXE+TFbDHb5skg136P66aQWyp\n qLkIUz74fKfFOeIYbuuttdT4WY5QRnk5Rb4U2V5m770flEy7iRA7WWhEOBfQjXRQTfvn\n dDUip+OIAi8l3t5fkTpyJT1ct8Fa0Fp/vL6R7E3eQxvf0G5Q08QM+WoVQFf+3ccKPwr9\n Mf7+zWuZuL6V/QP1MY35XCovrz6MJsetXZbDJDJ7FYVCFwa0AvQzkWiQmEg4o2HVXe1Y\n HRTw==","X-Gm-Message-State":"AOJu0YxMJgR5eKLcFg1J7S8EaIztHgVbclz2tb/zAgWbWJNG22Uu3486\n C+oOtI4OAYiM/1Bm/wLa2GUcbGCI27ze2AA8q1fe7Dpk+AWd/aPs6cErAmf6YcB4NZYLDwOBsWU\n AkYQefBackx2VgOgUoX7yz40xLhjrKNJuUxR0o2WsW2vbot4zdNhfc+KCuWruPeZb9GVhzmpray\n WdGTHj12oThZ4/mD7eE2ln9oIRENDTH3y/V6f3","X-Gm-Gg":"AeBDiesw2ml6qEgi0VOTwHuavjamTEtqPimNdgDsC4FejXiQvU/PAeclxE1gBfNqqsW\n ES2iEO3/yFN+UmIo0weezkOkPNFa7Dx3kmI/9z9Osn5GsQIeYYa4DmjNrgnl2XjWKKa31gxyE65\n RNtqh+4yYC+RXXb1QpdlvG6OjtEotsx6lXCZdXwbLT9kQa1ckA/J0qQJJdgd0EQEJaasmYnTnk0\n QP3zNymxEQhb8U1jU5KBl87AORWNgRMTJzvmUPJWY81MrsD+OrAZB4XpmT/lOjHM1mefztmT4PD\n K3XBov4j2xvynMHIokzcgtFbpOjdtWHUMUYivc5o39Ddv5khKT4JW6RVmZCB7YSyU4+fWpJicCu\n tpuB3dRiaueRDSmlEMPfVoDd5A6WLpe7wh20U/EguhSOIYkFC2508euqtN0yE0wEqgDR9Klgm97\n V4JC0sKw==","X-Received":["by 2002:a5d:5d02:0:b0:43e:aa88:f1a1 with SMTP id\n ffacd0b85a97d-4515d4d1107mr5341563f8f.30.1778067424010;\n Wed, 06 May 2026 04:37:04 -0700 (PDT)","by 2002:a5d:5d02:0:b0:43e:aa88:f1a1 with SMTP id\n ffacd0b85a97d-4515d4d1107mr5341511f8f.30.1778067423513;\n Wed, 06 May 2026 04:37:03 -0700 (PDT)"],"To":"ltp@lists.linux.it","Date":"Wed,  6 May 2026 14:36:55 +0300","Message-ID":"<20260506113655.10797-5-mmenashe@redhat.com>","X-Mailer":"git-send-email 2.53.0","In-Reply-To":"<20260506113655.10797-1-mmenashe@redhat.com>","References":"<20260506113655.10797-1-mmenashe@redhat.com>","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"fKJz12QZjjwohHKCn_HlNwvQqNa1dwOFX2rlNnTbvi0_1778067425","X-Mimecast-Originator":"redhat.com","X-Spam-Status":"No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID,\n DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS shortcircuit=no\n autolearn=disabled version=4.0.1","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on in-7.smtp.seeweb.it","X-Virus-Scanned":"clamav-milter 1.0.9 at in-7.smtp.seeweb.it","X-Virus-Status":"Clean","Subject":"[LTP] [PATCH 4/4] futex_cmp_requeue03: Add EFAULT and EACCES error\n coverage test","X-BeenThere":"ltp@lists.linux.it","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"Linux Test Project <ltp.lists.linux.it>","List-Unsubscribe":"<https://lists.linux.it/options/ltp>,\n <mailto:ltp-request@lists.linux.it?subject=unsubscribe>","List-Archive":"<http://lists.linux.it/pipermail/ltp/>","List-Post":"<mailto:ltp@lists.linux.it>","List-Help":"<mailto:ltp-request@lists.linux.it?subject=help>","List-Subscribe":"<https://lists.linux.it/listinfo/ltp>,\n <mailto:ltp-request@lists.linux.it?subject=subscribe>","From":"Michael Menasherov via ltp <ltp@lists.linux.it>","Reply-To":"Michael Menasherov <mmenashe@redhat.com>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it","Sender":"\"ltp\" <ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it>"},"content":"---\n runtest/syscalls                              |  1 +\n testcases/kernel/syscalls/futex/.gitignore    |  1 +\n .../syscalls/futex/futex_cmp_requeue03.c      | 96 +++++++++++++++++++\n 3 files changed, 98 insertions(+)\n create mode 100644 testcases/kernel/syscalls/futex/futex_cmp_requeue03.c","diff":"diff --git a/runtest/syscalls b/runtest/syscalls\nindex 4d85a1d26..65baa44dc 100644\n--- a/runtest/syscalls\n+++ b/runtest/syscalls\n@@ -1908,3 +1908,4 @@ perf_event_open03 perf_event_open03\n futex_wait06 futex_wait06\n futex_wait07 futex_wait07\n futex_wake05 futex_wake05\n+futex_cmp_requeue03 futex_cmp_requeue03\ndiff --git a/testcases/kernel/syscalls/futex/.gitignore b/testcases/kernel/syscalls/futex/.gitignore\nindex c11546e07..231b6bd25 100644\n--- a/testcases/kernel/syscalls/futex/.gitignore\n+++ b/testcases/kernel/syscalls/futex/.gitignore\n@@ -16,3 +16,4 @@\n /futex_wait06\n /futex_wait07\n /futex_wake05\n+/futex_cmp_requeue03\ndiff --git a/testcases/kernel/syscalls/futex/futex_cmp_requeue03.c b/testcases/kernel/syscalls/futex/futex_cmp_requeue03.c\nnew file mode 100644\nindex 000000000..099d5e35c\n--- /dev/null\n+++ b/testcases/kernel/syscalls/futex/futex_cmp_requeue03.c\n@@ -0,0 +1,96 @@\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+/*\n+ * Copyright (C) 2026 Red Hat, Inc.\n+ */\n+\n+/*\\\n+ * Check that futex(FUTEX_CMP_REQUEUE) returns EFAULT when uaddr or\n+ * uaddr2 points to unmapped memory, and EACCES (or EFAULT on older kernels)\n+ * when uaddr points to memory without read permission (PROT_NONE).\n+ *\n+ * The EACCES behavior for PROT_NONE was introduced in kernel 5.9.\n+ */\n+\n+#include <errno.h>\n+#include <sys/mman.h>\n+\n+#include \"futextest.h\"\n+\n+static futex_t futex_var = FUTEX_INITIALIZER;\n+static futex_t *prot_none_addr;\n+\n+static struct futex_test_variants variants[] = {\n+#if (__NR_futex != __LTP__NR_INVALID_SYSCALL)\n+\t{ .fntype = FUTEX_FN_FUTEX, .desc = \"syscall with old kernel spec\"},\n+#endif\n+\n+#if (__NR_futex_time64 != __LTP__NR_INVALID_SYSCALL)\n+\t{ .fntype = FUTEX_FN_FUTEX64, .desc = \"syscall time64 with kernel spec\"},\n+#endif\n+};\n+\n+static struct testcase {\n+\tconst char *desc;\n+\tfutex_t *uaddr;\n+\tfutex_t *uaddr2;\n+\tint exp_errno;\n+} testcases[3];\n+\n+static void run(unsigned int n)\n+{\n+\tstruct futex_test_variants *tv = &variants[tst_variant];\n+\tstruct testcase *tc = &testcases[n];\n+\n+\tTST_EXP_FAIL(futex_cmp_requeue(tv->fntype, tc->uaddr, futex_var,\n+\t\ttc->uaddr2, 1, 1, 0), tc->exp_errno, \"%s\", tc->desc);\n+}\n+\n+static void setup(void)\n+{\n+\tstruct futex_test_variants *tv = &variants[tst_variant];\n+\tsize_t pagesize = getpagesize();\n+\tfutex_t *unmapped;\n+\n+\ttst_res(TINFO, \"Testing variant: %s\", tv->desc);\n+\tfutex_supported_by_kernel(tv->fntype);\n+\n+\tunmapped = SAFE_MMAP(NULL, pagesize, PROT_READ | PROT_WRITE,\n+\t\tMAP_PRIVATE | MAP_ANONYMOUS, -1, 0);\n+\tSAFE_MUNMAP(unmapped, pagesize);\n+\n+\tprot_none_addr = SAFE_MMAP(NULL, pagesize, PROT_NONE,\n+\t\tMAP_PRIVATE | MAP_ANONYMOUS, -1, 0);\n+\n+\ttestcases[0] = (struct testcase){\n+\t\t.desc = \"uaddr unmapped\",\n+\t\t.uaddr = unmapped,\n+\t\t.uaddr2 = &futex_var,\n+\t\t.exp_errno = EFAULT,\n+\t};\n+\ttestcases[1] = (struct testcase){\n+\t\t.desc = \"uaddr2 unmapped\",\n+\t\t.uaddr = &futex_var,\n+\t\t.uaddr2 = unmapped,\n+\t\t.exp_errno = EFAULT,\n+\t};\n+\ttestcases[2] = (struct testcase){\n+\t\t.desc = \"uaddr PROT_NONE\",\n+\t\t.uaddr = prot_none_addr,\n+\t\t.uaddr2 = &futex_var,\n+\t\t.exp_errno = tst_kvercmp(5, 9, 0) >= 0 ? EACCES : EFAULT,\n+\t};\n+}\n+\n+static void cleanup(void)\n+{\n+\tif (prot_none_addr)\n+\t\tSAFE_MUNMAP(prot_none_addr, getpagesize());\n+}\n+\n+static struct tst_test test = {\n+\t.setup = setup,\n+\t.cleanup = cleanup,\n+\t.test = run,\n+\t.tcnt = ARRAY_SIZE(testcases),\n+\t.test_variants = ARRAY_SIZE(variants),\n+};\n","prefixes":["4/4"]}