get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2218041/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2218041,
    "url": "http://patchwork.ozlabs.org/api/patches/2218041/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/ltp/patch/20260331100138.58202-1-lufei@uniontech.com/",
    "project": {
        "id": 59,
        "url": "http://patchwork.ozlabs.org/api/projects/59/?format=api",
        "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": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260331100138.58202-1-lufei@uniontech.com>",
    "list_archive_url": null,
    "date": "2026-03-31T10:01:38",
    "name": "[v4] Rewrite ftrace_regression tests with new C API",
    "commit_ref": null,
    "pull_url": null,
    "state": "needs-review-ack",
    "archived": false,
    "hash": "491ca893713c64bf277be3ee628be8807e3b75de",
    "submitter": {
        "id": 88121,
        "url": "http://patchwork.ozlabs.org/api/people/88121/?format=api",
        "name": "lufei",
        "email": "lufei@uniontech.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/ltp/patch/20260331100138.58202-1-lufei@uniontech.com/mbox/",
    "series": [
        {
            "id": 498165,
            "url": "http://patchwork.ozlabs.org/api/series/498165/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/ltp/list/?series=498165",
            "date": "2026-03-31T10:01:38",
            "name": "[v4] Rewrite ftrace_regression tests with new C API",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/498165/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2218041/comments/",
    "check": "success",
    "checks": "http://patchwork.ozlabs.org/api/patches/2218041/checks/",
    "tags": {},
    "related": [],
    "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=fail reason=\"signature verification failed\" (1024-bit key;\n unprotected) header.d=uniontech.com header.i=@uniontech.com\n header.a=rsa-sha256 header.s=onoh2408 header.b=OLaleyDB;\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 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4flNvL64kFz1y1q\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 21:02:06 +1100 (AEDT)",
            "from picard.linux.it (localhost [IPv6:::1])\n\tby picard.linux.it (Postfix) with ESMTP id 4F0CD3CF3BD\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 12:02:04 +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 CA47B3CAE45\n for <ltp@lists.linux.it>; Tue, 31 Mar 2026 12:01:59 +0200 (CEST)",
            "from smtpbgbr1.qq.com (smtpbgbr1.qq.com [54.207.19.206])\n (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n (No client certificate requested)\n by in-7.smtp.seeweb.it (Postfix) with ESMTPS id 29BB720116C\n for <ltp@lists.linux.it>; Tue, 31 Mar 2026 12:01:56 +0200 (CEST)",
            "from localhost.localdomain ( [1.85.7.34])\n by bizesmtp.qq.com (ESMTP) with\n id ; Tue, 31 Mar 2026 18:01:43 +0800 (CST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=uniontech.com;\n s=onoh2408; t=1774951311;\n bh=8MX4lqbgVZK5tmosGbcC/P11GneNnqNxzOlAebP9Nvg=;\n h=From:To:Subject:Date:Message-Id:MIME-Version;\n b=OLaleyDBMffS0tItToU3SybNbGjOiPEJS2CvkqjGBFlSvI2RUaiTGX7u40aX/mn77\n fvlyqjhCqMjCqOsY4Y+SfPOBo2ll8Lzj+AmLFxIiB6W/n/ACQTmPgaj+bKgFoijXkg\n YO9hfnjFm3mj2yHdpXabaieG3YtTeUlpea247H5g=",
        "X-QQ-mid": "zesmtpsz7t1774951305tfc298e9e",
        "X-QQ-Originating-IP": "MKdFGiYr46yqxjefu65jRXbCw/VsvlmUCCuDyqxu9tM=",
        "X-QQ-SSF": "0000000000000000000000000000000",
        "X-QQ-GoodBg": "0",
        "X-BIZMAIL-ID": "13304817964270224312",
        "EX-QQ-RecipientCnt": "4",
        "From": "lufei <lufei@uniontech.com>",
        "To": "ltp@lists.linux.it",
        "Date": "Tue, 31 Mar 2026 18:01:38 +0800",
        "Message-Id": "<20260331100138.58202-1-lufei@uniontech.com>",
        "X-Mailer": "git-send-email 2.39.3",
        "In-Reply-To": "<20260331015538.53326-1-lufei@uniontech.com>",
        "References": "<20260331015538.53326-1-lufei@uniontech.com>",
        "MIME-Version": "1.0",
        "X-QQ-SENDSIZE": "520",
        "Feedback-ID": "zesmtpsz:uniontech.com:qybglogicsvrgz:qybglogicsvrgz3a-1",
        "X-QQ-XMAILINFO": "NWLpwLZrMWrI3jeNjqtsyDDP69veXFHyKgaJoW9wSRNMgHc2SwBbmaTU\n aLvXzciHaLniJ/9w+br22SzEeER8YR6PZHnqHdPRbGrXPfFaHJdOAj7WnlsSPRyds8OH7O0\n r7qg+D47OrvUiFjm3CVf4fI+i5uAaC7qgPQdhuO2fEZPw+YH35ksw+wcNV2R/4FONOYFUqu\n zxhH7qOGiC3ofjzvMqeZEpAE7phwjiSq9K+tQm8pA5QWbhqdAyXS65d8TctyjLOlYsyBovj\n +YxOWaMKJR9VOY2K69nrAYvkD0AGW2nlyW9nmLp2fW5x+UCDiaMFJ2VCt8x8jaipwWQVY1s\n SBt0AgVF4r6ZA8qy2sONxQW66Vk89kGLrwPZd0vyvHsaaSHzNXIEnYNM5pHKZOQPJQPcmEU\n v2VJ0Yf9chZgSIMTkcsd0Ra0fhDHCmg9/GE6t2V3KroYVM4L9Ja5XzaqV+abFf7cILdtXwO\n UfWPKI4CJM3ZEHf+W9/P6vP482HyH/j3Jyf5INDD4sUkQJomc6PtwwzKcA4HLNt3FBMZI1u\n iZojqepylcVaJC+sG4tRhbMDpk9eQ+mfzrDeGEEr3Ledh0VkSFOdGCE1CV/uRv+LtvFHvyz\n Rsm32G4WyFgeTxHpW1Ui3HYca/WbkpqBOvg5jNJruSc4UhLGYa3eJKyzy1/8fI6zRiX1lhV\n vEEQ19H/CPgbSAGxekqrbmyKxnKkpFDnU3mqJMxgkouFV9sXkvSRdXvapsDycGov1+evWmo\n QjB3JB02xWPBiv+xEhC0cV8RZ5ykXt23hCsZSGB4pg3+dVnpJJtiuYa2TetI1gxJV8X+CKY\n Wh22g6HVIVuk8okL7+3XtyXsPFxjCTEAFTcaZDptVn0lxN3oi8dADar1p11sZGwg9Ddh+/I\n 14tcKzD5SJGet781wUNNfCCJ/YK8kgHP6ZKje9Hkp2T8vrGVLlDHj4KR0h3ApsatIDD/PLY\n Bfa9JNL8pdj32H6DGWcEH6/5/9MxeLU1nNs609RXEDA7jVpIPQcQI3PVGIkC2UUBwrR33HT\n JJgUWj6xHPy7ILuxvA2DrPrgOI/ruW0xK1pQ8wVQOKWYEtx8R/",
        "X-QQ-XMRINFO": "MPJ6Tf5t3I/ylTmHUqvI8+Wpn+Gzalws3A==",
        "X-QQ-RECHKSPAM": "0",
        "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 v4] Rewrite ftrace_regression tests with new C API",
        "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>",
        "Cc": "lufei <lufei@uniontech.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": "Rewritten from old shell scripts.\n\nftrace_regression01: regression test for panic bug while using\nuserstacktrace, set userstacktrace in loop and check if success.\n\nftrace_regression02: for checking signal:signal_generate gives\n2 more fields: grp res.\n\nSigned-off-by: lufei <lufei@uniontech.com>\n---\n runtest/tracing                               |  4 +-\n .../kernel/tracing/ftrace_test/.gitignore     |  2 +\n .../tracing/ftrace_test/ftrace_regression.h   | 61 ++++++++++++++\n .../tracing/ftrace_test/ftrace_regression01.c | 82 ++++++++++++++++++\n .../ftrace_test/ftrace_regression01.sh        | 83 -------------------\n .../tracing/ftrace_test/ftrace_regression02.c | 56 +++++++++++++\n .../ftrace_test/ftrace_regression02.sh        | 63 --------------\n 7 files changed, 203 insertions(+), 148 deletions(-)\n create mode 100644 testcases/kernel/tracing/ftrace_test/.gitignore\n create mode 100644 testcases/kernel/tracing/ftrace_test/ftrace_regression.h\n create mode 100644 testcases/kernel/tracing/ftrace_test/ftrace_regression01.c\n delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_regression01.sh\n create mode 100644 testcases/kernel/tracing/ftrace_test/ftrace_regression02.c\n delete mode 100755 testcases/kernel/tracing/ftrace_test/ftrace_regression02.sh",
    "diff": "diff --git a/runtest/tracing b/runtest/tracing\nindex 674e2ad97..2a4a92c5f 100644\n--- a/runtest/tracing\n+++ b/runtest/tracing\n@@ -1,6 +1,6 @@\n #DESCRIPTION:Tracing testing\n-ftrace_regression01\tftrace_regression01.sh\n-ftrace_regression02\tftrace_regression02.sh\n+ftrace_regression01\tftrace_regression01\n+ftrace_regression02\tftrace_regression02\n ftrace-stress-test\tftrace_stress_test.sh 90\n dynamic_debug01\t\tdynamic_debug01.sh\n fanotify25 fanotify25\ndiff --git a/testcases/kernel/tracing/ftrace_test/.gitignore b/testcases/kernel/tracing/ftrace_test/.gitignore\nnew file mode 100644\nindex 000000000..b0153e9fa\n--- /dev/null\n+++ b/testcases/kernel/tracing/ftrace_test/.gitignore\n@@ -0,0 +1,2 @@\n+ftrace_regression01\n+ftrace_regression02\ndiff --git a/testcases/kernel/tracing/ftrace_test/ftrace_regression.h b/testcases/kernel/tracing/ftrace_test/ftrace_regression.h\nnew file mode 100644\nindex 000000000..0efae7268\n--- /dev/null\n+++ b/testcases/kernel/tracing/ftrace_test/ftrace_regression.h\n@@ -0,0 +1,61 @@\n+/* SPDX-License-Identifier: GPL-2.0-or-later\n+ *\n+ * Copyright (c) 2026 lufei <lufei@uniontech.com>\n+ *\n+ * Shared header for ftrace regression tests.\n+ */\n+\n+#ifndef FTRACE_REGRESSION_H\n+#define FTRACE_REGRESSION_H\n+\n+#include \"tst_test.h\"\n+#include \"tst_safe_file_ops.h\"\n+#include \"tst_safe_stdio.h\"\n+\n+#include <regex.h>\n+#include <stdio.h>\n+\n+#define FTRACE_LINE_BUF_SIZE 1024\n+#define DEBUGFS_DIR \"debugfs\"\n+\n+/**\n+ * file_contains - Check if a file contains specific regex pattern.\n+ */\n+static inline int file_contains(const char *path, const char *pattern)\n+{\n+\tFILE *fp = SAFE_FOPEN(path, \"r\");\n+\tchar *buf = SAFE_MALLOC(FTRACE_LINE_BUF_SIZE);\n+\tbool found = false;\n+\n+\tregex_t re;\n+\n+\tif (regcomp(&re, pattern, REG_EXTENDED | REG_NOSUB) != 0) {\n+\t\tSAFE_FCLOSE(fp);\n+\t\treturn found;\n+\t}\n+\n+\twhile (fgets(buf, FTRACE_LINE_BUF_SIZE, fp)) {\n+\t\tif (regexec(&re, buf, 0, NULL, 0) == 0) {\n+\t\t\tfound = true;\n+\t\t\tbreak;\n+\t\t}\n+\t}\n+\n+\tregfree(&re);\n+\tSAFE_FCLOSE(fp);\n+\tfree(buf);\n+\treturn found;\n+}\n+\n+static inline void mount_debugfs(void)\n+{\n+\tSAFE_MKDIR(DEBUGFS_DIR, 0755);\n+\tSAFE_MOUNT(NULL, DEBUGFS_DIR, \"debugfs\", 0, NULL);\n+}\n+\n+static inline void umount_debugfs(void)\n+{\n+\tSAFE_UMOUNT(DEBUGFS_DIR);\n+}\n+\n+#endif /* FTRACE_REGRESSION_H */\ndiff --git a/testcases/kernel/tracing/ftrace_test/ftrace_regression01.c b/testcases/kernel/tracing/ftrace_test/ftrace_regression01.c\nnew file mode 100644\nindex 000000000..be2327582\n--- /dev/null\n+++ b/testcases/kernel/tracing/ftrace_test/ftrace_regression01.c\n@@ -0,0 +1,82 @@\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+/*\n+ * Copyright (c) 2015 Red Hat Inc.\n+ * Copyright (c) 2026 lufei <lufei@uniontech.com>\n+ */\n+\n+/*\\\n+ * Regression test for panic while using userstacktrace.\n+ *\n+ * BUG: unable to handle kernel paging request at 00000000417683c0\n+ *      IP: [<ffffffff8105c834>] update_curr+0x124/0x1e0\n+ *      Thread overran stack, or stack corrupted\n+ *      Oops: 0000 [#1] SMP\n+ *      last sysfs file: ../system/cpu/cpu15/cache/index2/shared_cpu_map\n+ *\n+ * The bug was fixed by:\n+ *      1dbd195 (tracing: Fix preempt count leak)\n+ */\n+\n+#include <unistd.h>\n+#include \"ftrace_regression.h\"\n+\n+#define STACK_TRACER_PATH \"/proc/sys/kernel/stack_tracer_enabled\"\n+#define TRACE_OPTIONS DEBUGFS_DIR \"/tracing/trace_options\"\n+#define EXC_PAGE_FAULT DEBUGFS_DIR \"/tracing/events/exceptions/page_fault_kernel/enable\"\n+#define MM_PAGE_FAULT DEBUGFS_DIR \"/tracing/events/kmem/mm_kernel_pagefault/enable\"\n+\n+#define LOOP 10\n+\n+static const char *page_fault_path;\n+static int page_fault_origin;\n+\n+static void setup(void)\n+{\n+\tmount_debugfs();\n+\n+\tif (access(EXC_PAGE_FAULT, F_OK) == 0)\n+\t\tpage_fault_path = EXC_PAGE_FAULT;\n+\telse if (access(MM_PAGE_FAULT, F_OK) == 0)\n+\t\tpage_fault_path = MM_PAGE_FAULT;\n+\telse\n+\t\ttst_brk(TCONF, \"Page fault event not available\");\n+\n+\tSAFE_FILE_SCANF(page_fault_path, \"%d\", &page_fault_origin);\n+}\n+\n+static void run(void)\n+{\n+\tint i;\n+\n+\tfor (i = 0; i < LOOP; i++) {\n+\t\tSAFE_FILE_PRINTF(STACK_TRACER_PATH, \"1\");\n+\t\tSAFE_FILE_PRINTF(TRACE_OPTIONS, \"userstacktrace\");\n+\n+\t\tif (!file_contains(TRACE_OPTIONS, \"^userstacktrace\"))\n+\t\t\ttst_brk(TBROK, \"Failed to set userstacktrace\");\n+\n+\t\tSAFE_FILE_PRINTF(page_fault_path, \"1\");\n+\t}\n+\n+\tSAFE_FILE_PRINTF(page_fault_path, \"%d\", page_fault_origin);\n+\n+\ttst_res(TPASS, \"Test passed for setting userstacktrace \"\n+\t\t\t\"bug(preempt count leak) not reproduced\"\n+\t\t\t);\n+}\n+\n+static struct tst_test test = {\n+\t.needs_root = 1,\n+\t.needs_tmpdir = 1,\n+\t.setup = setup,\n+\t.test_all = run,\n+\t.cleanup = umount_debugfs,\n+\t.save_restore = (const struct tst_path_val[]) {\n+\t\t{STACK_TRACER_PATH, NULL, TST_SR_TCONF},\n+\t\t{}\n+\t},\n+\t.tags = (const struct tst_tag[]) {\n+\t\t{\"linux-git\", \"1dbd1951f39e\"},\n+\t\t{}\n+\t},\n+};\ndiff --git a/testcases/kernel/tracing/ftrace_test/ftrace_regression01.sh b/testcases/kernel/tracing/ftrace_test/ftrace_regression01.sh\ndeleted file mode 100755\nindex d6969cfc6..000000000\n--- a/testcases/kernel/tracing/ftrace_test/ftrace_regression01.sh\n+++ /dev/null\n@@ -1,83 +0,0 @@\n-#! /bin/sh\n-\n-###########################################################################\n-##                                                                       ##\n-## Copyright (c) 2015, Red Hat Inc.                                      ##\n-##                                                                       ##\n-## This program is free software: you can redistribute it and/or modify  ##\n-## it under the terms of the GNU General Public License as published by  ##\n-## the Free Software Foundation, either version 3 of the License, or     ##\n-## (at your option) any later version.                                   ##\n-##                                                                       ##\n-## This program is distributed in the hope that it will be useful,       ##\n-## but WITHOUT ANY WARRANTY; without even the implied warranty of        ##\n-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the          ##\n-## GNU General Public License for more details.                          ##\n-##                                                                       ##\n-## You should have received a copy of the GNU General Public License     ##\n-## along with this program. If not, see <http://www.gnu.org/licenses/>.  ##\n-##                                                                       ##\n-## Author: Li Wang <liwang@redhat.com>                                   ##\n-##                                                                       ##\n-###########################################################################\n-##                                                                       ##\n-## Summary:  panic while using userstacktrace                            ##\n-##                                                                       ##\n-## BUG: unable to handle kernel paging request at 00000000417683c0       ##\n-##      IP: [<ffffffff8105c834>] update_curr+0x124/0x1e0                 ##\n-##      PGD 41a796067 PUD 0                                              ##\n-##      Thread overran stack, or stack corrupted                         ##\n-##      Oops: 0000 [#1] SMP                                              ##\n-##      last sysfs file: ../system/cpu/cpu15/cache/index2/shared_cpu_map ##\n-##                                                                       ##\n-## The bug was fixed by:                                                 ##\n-##      1dbd195 (tracing: Fix preempt count leak)                        ##\n-##                                                                       ##\n-###########################################################################\n-\n-export TCID=\"ftrace_regression01\"\n-export TST_TOTAL=1\n-\n-. ftrace_lib.sh\n-\n-LOOP=10\n-\n-TSTACK_TRACE_PATH=\"/proc/sys/kernel/stack_tracer_enabled\"\n-EXC_PAGE_FAULT_ENABLE=\"$TRACING_PATH/events/exceptions/page_fault_kernel/enable\"\n-MM_PAGE_FAULT_ENABLE=\"$TRACING_PATH/events/kmem/mm_kernel_pagefault/enable\"\n-\n-ftrace_userstacktrace_test()\n-{\n-\tif [ ! -e \"$TSTACK_TRACE_PATH\" ]; then\n-\t\ttst_brkm TCONF \"Stack Tracer is not cofigured in This kernel\"\n-\tfi\n-\n-\tfor i in $(seq $LOOP); do\n-\t\techo 1 >  $TSTACK_TRACE_PATH\n-\t\techo userstacktrace > $TRACING_PATH/trace_options\n-\t\tgrep -q \"^userstacktrace\"  $TRACING_PATH/trace_options\n-\t\tif [ $? -ne 0 ]; then\n-\t\t\ttst_brkm TBROK \"Failed to set userstacktrace\"\n-\t\tfi\n-\n-\t\tif [ -f \"$EXC_PAGE_FAULT_ENABLE\" ]; then\n-\t\t\texc_page_fault_enable=`cat $EXC_PAGE_FAULT_ENABLE`\n-\t\t\techo 1 > $EXC_PAGE_FAULT_ENABLE\n-\t\telse\n-\t\t\tmm_page_fault_enable=`cat $MM_PAGE_FAULT_ENABLE`\n-\t\t\techo 1 > $MM_PAGE_FAULT_ENABLE\n-\t\tfi\n-\tdone\n-\n-\tif [ -f \"$EXC_PAGE_FAULT_ENABLE\" ]; then\n-\t\techo \"$exc_page_fault_enable\" > $EXC_PAGE_FAULT_ENABLE\n-\telse\n-\t\techo \"$mm_page_fault_enable\" > $MM_PAGE_FAULT_ENABLE\n-\tfi\n-\n-\ttst_resm TPASS \"Finished running the test\"\n-}\n-\n-ftrace_userstacktrace_test\n-\n-tst_exit\ndiff --git a/testcases/kernel/tracing/ftrace_test/ftrace_regression02.c b/testcases/kernel/tracing/ftrace_test/ftrace_regression02.c\nnew file mode 100644\nindex 000000000..b4aac7ad0\n--- /dev/null\n+++ b/testcases/kernel/tracing/ftrace_test/ftrace_regression02.c\n@@ -0,0 +1,56 @@\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+/*\n+ * Copyright (c) 2015 Red Hat Inc.\n+ * Copyright (c) 2026 lufei <lufei@uniontech.com>\n+ */\n+\n+/*\\\n+ * Check signal:signal_generate gives 2 more fields: grp=[0-9] res=[0-9]\n+ */\n+\n+#include \"ftrace_regression.h\"\n+\n+#define SET_EVENT DEBUGFS_DIR \"/tracing/set_event\"\n+#define TRACING_ON DEBUGFS_DIR \"/tracing/tracing_on\"\n+#define TRACE_FILE DEBUGFS_DIR \"/tracing/trace\"\n+\n+#define LOOP 100\n+\n+static void run(void)\n+{\n+\tint i;\n+\tconst char *const cmd_ls[] = {\"ls\", \"-l\", \"/proc\", NULL};\n+\n+\tSAFE_FILE_PRINTF(SET_EVENT, \"signal:signal_generate\");\n+\tSAFE_FILE_PRINTF(TRACING_ON, \"1\");\n+\tSAFE_FILE_PRINTF(TRACE_FILE, \"\\n\");\n+\n+\t// to generate trace\n+\tfor (i = 0; i < LOOP; i++)\n+\t\tSAFE_CMD(cmd_ls, \"/dev/null\", \"/dev/null\");\n+\n+\tif (file_contains(TRACE_FILE, \"grp=[0-9]\") &&\n+\t\t\tfile_contains(TRACE_FILE, \"res=[0-9]\"))\n+\t\ttst_res(TPASS, \"Pattern grp=[0-9] res=[0-9] reported after \"\n+\t\t\t       \"setting signal:signal_generate\");\n+\telse\n+\t\ttst_res(TFAIL, \"Pattern grp=[0-9] res=[0-9] not found in trace\");\n+}\n+\n+static struct tst_test test = {\n+\t.needs_root = 1,\n+\t.needs_tmpdir = 1,\n+\t.setup = mount_debugfs,\n+\t.test_all = run,\n+\t.cleanup = umount_debugfs,\n+\t.needs_cmds = (struct tst_cmd[]) {\n+\t\t{.cmd = \"ls\"},\n+\t\t{}\n+\t},\n+\t.tags = (const struct tst_tag[]) {\n+\t\t{\"linux-git\", \"6c303d3ab39f\"},\n+\t\t{\"linux-git\", \"163566f60bfe\"},\n+\t\t{}\n+\t},\n+};\n+\ndiff --git a/testcases/kernel/tracing/ftrace_test/ftrace_regression02.sh b/testcases/kernel/tracing/ftrace_test/ftrace_regression02.sh\ndeleted file mode 100755\nindex 3c32f219e..000000000\n--- a/testcases/kernel/tracing/ftrace_test/ftrace_regression02.sh\n+++ /dev/null\n@@ -1,63 +0,0 @@\n-#! /bin/sh\n-\n-###########################################################################\n-##                                                                       ##\n-## Copyright (c) 2015, Red Hat Inc.                                      ##\n-##                                                                       ##\n-## This program is free software: you can redistribute it and/or modify  ##\n-## it under the terms of the GNU General Public License as published by  ##\n-## the Free Software Foundation, either version 3 of the License, or     ##\n-## (at your option) any later version.                                   ##\n-##                                                                       ##\n-## This program is distributed in the hope that it will be useful,       ##\n-## but WITHOUT ANY WARRANTY; without even the implied warranty of        ##\n-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the          ##\n-## GNU General Public License for more details.                          ##\n-##                                                                       ##\n-## You should have received a copy of the GNU General Public License     ##\n-## along with this program. If not, see <http://www.gnu.org/licenses/>.  ##\n-##                                                                       ##\n-## Author: Li Wang <liwang@redhat.com>                                   ##\n-##                                                                       ##\n-###########################################################################\n-##                                                                       ##\n-## Summary: check signal:signal_generate gives 2 more fields: grp res    ##\n-##                                                                       ##\n-## This testcase is writing for signal events change:                    ##\n-##       6c303d3 tracing: let trace_signal_generate() report more info...##\n-##       163566f tracing: send_sigqueue() needs trace_signal_generate()  ##\n-##                                                                       ##\n-###########################################################################\n-\n-export TCID=\"ftrace_regression02\"\n-export TST_TOTAL=1\n-\n-. ftrace_lib.sh\n-\n-ftrace_signal_test()\n-{\n-\t# Set envent\n-\techo 'signal:signal_generate' > $TRACING_PATH/set_event\n-\techo 1 > $TRACING_PATH/tracing_on\n-\techo > $TRACING_PATH/trace\n-\n-\t# just to generate trace\n-\tfor i in $(seq 100); do\n-\t\tls -l /proc > /dev/null 2>&1\n-\tdone\n-\n-\tgrep -q 'grp=[0-9] res=[0-9]' $TRACING_PATH/trace\n-\tif [ $? -eq 0 ]; then\n-\t\ttst_resm TPASS \"finished running the test.\"\n-\telse\n-\t\ttst_resm TFAIL \"running the test failed, please check log message.\"\n-\tfi\n-}\n-\n-if tst_kvcmp -lt \"3.2\"; then\n-\ttst_brkm TCONF \"The test should be run in kernels >= 3.2.0 Skip the test...\"\n-fi\n-\n-ftrace_signal_test\n-\n-tst_exit\n",
    "prefixes": [
        "v4"
    ]
}