get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2196954,
    "url": "http://patchwork.ozlabs.org/api/patches/2196954/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/glibc/patch/20260216172545.1179353-2-yury.khrustalev@arm.com/",
    "project": {
        "id": 41,
        "url": "http://patchwork.ozlabs.org/api/projects/41/?format=api",
        "name": "GNU C Library",
        "link_name": "glibc",
        "list_id": "libc-alpha.sourceware.org",
        "list_email": "libc-alpha@sourceware.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260216172545.1179353-2-yury.khrustalev@arm.com>",
    "list_archive_url": null,
    "date": "2026-02-16T17:25:44",
    "name": "[v4,1/2] aarch64: Lock GCS status at startup",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "dfbc7442f7d1cc8c5c77df5c0353bde68b7e536a",
    "submitter": {
        "id": 88214,
        "url": "http://patchwork.ozlabs.org/api/people/88214/?format=api",
        "name": "Yury Khrustalev",
        "email": "yury.khrustalev@arm.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/glibc/patch/20260216172545.1179353-2-yury.khrustalev@arm.com/mbox/",
    "series": [
        {
            "id": 492335,
            "url": "http://patchwork.ozlabs.org/api/series/492335/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/glibc/list/?series=492335",
            "date": "2026-02-16T17:25:44",
            "name": "aarch64: Support locking GCS",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/492335/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2196954/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2196954/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "libc-alpha@sourceware.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@legolas.ozlabs.org",
            "libc-alpha@sourceware.org"
        ],
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=VApQf8yx;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=VApQf8yx;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)",
            "sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=VApQf8yx;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=VApQf8yx",
            "sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com",
            "sourceware.org; spf=pass smtp.mailfrom=arm.com",
            "server2.sourceware.org;\n arc=pass smtp.remote-ip=2a01:111:f403:c207::3"
        ],
        "Received": [
            "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\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 4fF8qt1vF0z1xwF\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 04:28:10 +1100 (AEDT)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 1BEA14BAE7C5\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 17:28:08 +0000 (GMT)",
            "from MRWPR03CU001.outbound.protection.outlook.com\n (mail-francesouthazlp170110003.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c207::3])\n by sourceware.org (Postfix) with ESMTPS id E8BEA4BAD16B\n for <libc-alpha@sourceware.org>; Mon, 16 Feb 2026 17:27:20 +0000 (GMT)",
            "from CWLP265CA0309.GBRP265.PROD.OUTLOOK.COM (2603:10a6:401:5d::33)\n by DU0PR08MB8304.eurprd08.prod.outlook.com (2603:10a6:10:40c::10) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Mon, 16 Feb\n 2026 17:27:05 +0000",
            "from AM1PEPF000252DB.eurprd07.prod.outlook.com\n (2603:10a6:401:5d:cafe::77) by CWLP265CA0309.outlook.office365.com\n (2603:10a6:401:5d::33) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9611.16 via Frontend Transport; Mon,\n 16 Feb 2026 17:27:04 +0000",
            "from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n AM1PEPF000252DB.mail.protection.outlook.com (10.167.16.53) with Microsoft\n SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.12\n via Frontend Transport; Mon, 16 Feb 2026 17:27:04 +0000",
            "from AM8P189CA0015.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::20)\n by GVXPR08MB10668.eurprd08.prod.outlook.com (2603:10a6:150:14a::14)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Mon, 16 Feb\n 2026 17:25:52 +0000",
            "from AMS0EPF000001B2.eurprd05.prod.outlook.com\n (2603:10a6:20b:218:cafe::bc) by AM8P189CA0015.outlook.office365.com\n (2603:10a6:20b:218::20) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9611.16 via Frontend Transport; Mon,\n 16 Feb 2026 17:25:31 +0000",
            "from nebula.arm.com (172.205.89.229) by\n AMS0EPF000001B2.mail.protection.outlook.com (10.167.16.166) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9632.12 via Frontend Transport; Mon, 16 Feb 2026 17:25:52 +0000",
            "from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EX03.Arm.com\n (10.240.25.137) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Mon, 16 Feb\n 2026 17:25:51 +0000",
            "from fdebian.localdomain (10.57.10.35) by mail.arm.com\n (10.240.25.138) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29 via Frontend\n Transport; Mon, 16 Feb 2026 17:25:50 +0000"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 1BEA14BAE7C5",
            "OpenDKIM Filter v2.11.0 sourceware.org E8BEA4BAD16B"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org E8BEA4BAD16B",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org E8BEA4BAD16B",
        "ARC-Seal": [
            "i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1771262841; cv=pass;\n b=EiXxQqNlf7KmwjqzjXjbLYXcUzo5tZZQhEUJgjYna2R4rRLkthwcqL4sUZ/X0AnQi0rgN7SLV/DqL0H8NG77FBOzUGHb37vQOw9BtzfbtLnb/R98m6FEZhi5MZBDn+ty6nWhy9VXpQO+jctAdhxKKzULnduA/TnFpinmqU92VKw=",
            "i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=TCgYj/zOKxSF0GPJdgI+OqFfSXcX826wG9a1hKK1CoqH35iAzx9rBmjo7cbGYYPQHn/T76biihJmRmt8OhOZnWzqBXZ3AaIdA45Rh/KhR3yBqT46hZrgLDPBXJoMXAllOwr6jTILD/afiYrE45nTRZe+CrchHgUZOSbc1X6L639GklvHOPyNqWTqfrGsNU5t+5HWpLPj585lTYeNXvOmkc6LuddzGPFYdwS6lnWY/pCxncl1dFZNbmcYTIeSyEyqCw21EOyHBECkngvgoEDaHuwSYcly3wRYop6AeFUU0K9qh1lN/CqA56InE7ejYhrmRfOIXV9WUkiTd/WVbrHd7Q==",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=uTIF66O+uJXdsr4vPOtvnNN+UsTCdkQ4++yLKJdNKU1umsLMtUjjcYLGr3ug2N9CVmNoppjTN0duMBA+8PG4paMMl3/xrc+YuvdliwPaMpTF56z61UGebpD90badbkXApCw2fnZPYA/St0fHcCfpstfCQpf4l3P5B0Dftj7JVv7b4AOeKq87MXyRoI+rEB5NJ/h7tS5m8o/yFOUXvvzzi2xWiHET1JGrRya34vaIg05ADZnFYeaYfaUXn3d10olEJvwF3mQtPyxg1Gn+eZHXQ2mwuMPNs/RXKQz2PxQj95BkXR87pg5ogftKfwePjKuhci1Cw0jvPqHxYmZNYC41Vg=="
        ],
        "ARC-Message-Signature": [
            "i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1771262841; c=relaxed/simple;\n bh=bdWn+BqGxRfdl/LNXBdaKlsRi4x+W+DNMXHIgC9CVTQ=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=dNWpegJZ4gD7AxQV4qc8oPOaKCsrMPzJA2TJQrrmNactOJXriCN5QGERkCkGqhUbzlNtCch1HCI6UMRMAmgXsbMW10YHZJfC7517tJFAV6C7TrHNvUKJirEjX18VZcaQBmqGWVYpEArFLUcE9WWMD0w9q+l6Pf3aQwgX+Z7J6I4=",
            "i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=q0UIAgInM0i1ya0GDcydWGLkxw/0lbGcu/d8lY8g+A0=;\n b=B6wkXF6gGuZb+5S09jNz8KDptrCDChszo5ART3DG4O6p/Fx8rt+qgu+oYIMEIUetRwKF+bbox0tfBWtrCOiA9uA/Ca9sEOrC6FeeTg7/zRG8IquKfAOw7OlclFa/t/1XTAse/2msc/ZRLDO6d6rqL+fOKPDn/axTrTOeol6Rt2vs+ZhMm/1gg66vVWGyZEz9EJ4fH4vGNG08eFiS59KJoVdxFgF1n4we6K8NNBZcoReWdv9IHRHQJzdGwEmGap4yDpvIUSBrilOpFBObRzgtMvyUmpm0KwhqRCNF1VGII+YwBOLUFsvwJqqyU6IyZP9UeuWum0A121l/NulWTPuYzQ==",
            "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=q0UIAgInM0i1ya0GDcydWGLkxw/0lbGcu/d8lY8g+A0=;\n b=Ej9oE5s0GeF1f06Y3L1bIr81nA2vsMdOH0zR9WNd0A75A9KQ8ewXLw5amTB4a6whG6Lds5IChZFX1qTfujV7jMsIIb7LwiVgV1xEHPCyHi8ravs5Yc0luep/4lvhMO1aiTiSOXtt1Z0f9X3KCELEmutFEg6Qs2lv8JisOOPiOcK8xer9xwCFH0wvqrrnR39kMvvto/5+Zz+dgrFEkAOBCjfUKvO6gxXnu6dtbew9vX00mLwEF5K6EDVsTbVVZFF88EQdhYxUaJpnAUaaNAQVhWeAnrfOtCJb8CF9En/R3QbNMrx9pTKzTr/ey8miW0j30sYF8HGvhVTLTuQyODJgcw=="
        ],
        "ARC-Authentication-Results": [
            "i=3; server2.sourceware.org",
            "i=2; mx.microsoft.com 1; spf=pass (sender ip is\n 4.158.2.129) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com;\n dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;\n dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1\n spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com])",
            "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 172.205.89.229) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com;\n dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;\n dkim=none (message not signed); arc=none (0)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=q0UIAgInM0i1ya0GDcydWGLkxw/0lbGcu/d8lY8g+A0=;\n b=VApQf8yxtr/c4ZJ+58ofAMp7BMWAYrFZFv1GHQfU3AAli2pLlOhAGhfi2Lwbi17A7maQvUB3mNbxcwIBIXEcO/Zd2BbIqGaQ/s93/5H2/QWiGuxJPPTKcQrC+2wLzcPcmlhE1Lj+9aUzRvQAq3PaItBp+XckqpXT4kcJH+VXq74=",
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=q0UIAgInM0i1ya0GDcydWGLkxw/0lbGcu/d8lY8g+A0=;\n b=VApQf8yxtr/c4ZJ+58ofAMp7BMWAYrFZFv1GHQfU3AAli2pLlOhAGhfi2Lwbi17A7maQvUB3mNbxcwIBIXEcO/Zd2BbIqGaQ/s93/5H2/QWiGuxJPPTKcQrC+2wLzcPcmlhE1Lj+9aUzRvQAq3PaItBp+XckqpXT4kcJH+VXq74="
        ],
        "X-MS-Exchange-Authentication-Results": [
            "spf=pass (sender IP is 4.158.2.129)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=arm.com;dmarc=pass action=none header.from=arm.com;",
            "spf=pass (sender IP is 172.205.89.229)\n smtp.mailfrom=arm.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=arm.com;"
        ],
        "Received-SPF": [
            "Pass (protection.outlook.com: domain of arm.com designates\n 4.158.2.129 as permitted sender) receiver=protection.outlook.com;\n client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C",
            "Pass (protection.outlook.com: domain of arm.com designates\n 172.205.89.229 as permitted sender) receiver=protection.outlook.com;\n client-ip=172.205.89.229; helo=nebula.arm.com; pr=C"
        ],
        "From": "Yury Khrustalev <yury.khrustalev@arm.com>",
        "To": "<libc-alpha@sourceware.org>",
        "CC": "Adhemerval Zanella <adhemerval.zanella@linaro.org>, Florian Weimer\n <fweimer@redhat.com>, Mark Brown <broonie@kernel.org>, Jeremy Linton\n <jeremy.linton@arm.com>, Bill Roberts <bill.roberts@foss.arm.com>, \"Steve\n Capper\" <steve.capper@arm.com>, Andre Vieira <andre.simoesdiasvieira@arm.com>",
        "Subject": "[PATCH v4 1/2] aarch64: Lock GCS status at startup",
        "Date": "Mon, 16 Feb 2026 17:25:44 +0000",
        "Message-ID": "<20260216172545.1179353-2-yury.khrustalev@arm.com>",
        "X-Mailer": "git-send-email 2.47.3",
        "In-Reply-To": "<20260216172545.1179353-1-yury.khrustalev@arm.com>",
        "References": "<20260216172545.1179353-1-yury.khrustalev@arm.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-EOPAttributedMessage": "1",
        "X-MS-TrafficTypeDiagnostic": "\n AMS0EPF000001B2:EE_|GVXPR08MB10668:EE_|AM1PEPF000252DB:EE_|DU0PR08MB8304:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "ce42c19e-ab8d-4965-d877-08de6d809a29",
        "x-checkrecipientrouted": "true",
        "NoDisclaimer": "true",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam-Untrusted": "BCL:0;\n ARA:13230040|1800799024|82310400026|36860700013|376014;",
        "X-Microsoft-Antispam-Message-Info-Original": "\n CIvCmwb/2auuVZ8uQ52OJ+VnUPWbvmSDGhv3YgKTxjlS9OnmNepG+w4ZPNR8J8cVhsIM0U5DUeQiacs8s95ikJjL53E2aW3ydfni0WoZhMqgIoT20MgO0mtb35Pmm6pmtaFIG/i2Pjpe6AM1XbLz/PH02X4ZVvb0A7J2+NnNEMP4DL3mXYbV1+kVqT6AROxXKR/iEQeakWVNGBeChVSfHiZGWUMnD7SmDnKMW5ke80OkqVu/ZqYOYL4/YGQOaG8CNG5TOZK5Vxn9Gf6zQyzlUVtS8ZyZuTxKYbAlqFfCjz0EpW5PWzKJNBw63CMbr3ubrYCWIum/D934SIMSHnySGQnGYlScR5FctCIfpp9VYKdnjuaaDzDzLMkNtFlM8I511UuT77PvOlOA/gS9Vz5LcawTyq3Eppg3EfjY0xtrWczoqY6TuttDYFMJY7P3hyPX/zyO+cGpaLGcHGBumJA86zFwcplCceJ0yMpVPqL0D1dzRHn5Cn20M1xEIDfRx5t/BwKNdSrrfqkA32VHQxBMGdgz/Jc1zj0fdIjrxCei+wg3xnHPTsdDA4YgaJjwUCpnq8krE4UvmZnWTqZdBdmuxfMSZ2T097qxijuXLh4EK/NBWro7IaZdEsSVtIrzCNTavCxTITz9sG59mneUCs3kT6C9ssb7oyu2L92OICQII1eailNDkqsHEf7funJZfRMNhyRYEreLciD1MjxaGOxKvVPTy3C0FfeIPJz2MHVkMeNLcqNPKJOGxzoYLZNqENu/g4ycq8hOuFrVcZkhf9L49ioeTx1oFky9QsCDoMi5+WgD4aTBCG5xHG1f1QQnzCj3nqcCrPs5c0UehKI5CmaRFmuKrsZ6s5EYzEAVnjFeFQAFyPN15hbg3aGTuNaR83dCjVzGLHia7wvjn1Xy5WN3PAngFCywfWUxnHEmiTKFKRuDxqipE96orKqk3A4kX7Yu5DCqos8x1Pc3+BpPQ0sMu+n6XVCGX4EA6gQQuAKmK7+4zxDqPJRwPqgu538gAQjNpmtMYeFeInyd+ihqNZGL0nYPdqhBifOphbE0X024L4aq8UwpDvJTYQX2+JXoFCZnoqodjGpOP0Rf9xyWpcjVICPDVhJu52+0sSyg5V2uEcmdBztO4WmXNPU2VfKJ8Rt31azIcg+saotOxwZ/gGeLG0Humodra/OZcKsGqax4gUGzYwIa0QBkqE/UCkynlkxeAJpGD5IYPMY3AB5nv3ew33txb39KZRZfbcBAbJtVIlqLvHpuZ/3riks944j2QyZ+KMEL0VMcvsDewBOVpeqQ7MNb7jSnVNQ+TFEv4uy9wwBjFtJUOfptL+OAIn4hjBvKpVdENLlWIBX52Shr267TwxEuQVhY8+HxqyC2M85W+puoFlCKwitMdOwyFRzwQVAeJUMsUCUeZxawz4PtSw52LhKZHgjUOpk2pbWql/s45fZHD26u19x0k2RuXGtCz1WrrvCMdGr37MQfCyUpPTVFz79iXuEs/HrPSczRrLY6vtyvgnfQQ+xS7C/4nVL8N9XlDD89d3g/2KbTwJ415QgJ7AqTmaKhjZp0Ksiq/vN/KA6V2+BjaZftJPYnMfOEo8eAZwU8kVaj6PC8R4cQlnLPSUz/rQAitay1bPYCB0+iialm/8DLYHvEmiUXplGeIqPUZQKhV//H3UkvGWFoBDbuEg==",
        "X-Forefront-Antispam-Report-Untrusted": "CIP:172.205.89.229; CTRY:IE; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent;\n CAT:NONE; SFS:(13230040)(1800799024)(82310400026)(36860700013)(376014);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": [
            "GVXPR08MB10668",
            "DU0PR08MB8304"
        ],
        "X-MS-Exchange-Transport-CrossTenantHeadersStripped": "\n AM1PEPF000252DB.eurprd07.prod.outlook.com",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id-Prvs": "\n 58f864b8-8d7d-40ed-500c-08de6d806f2d",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|1800799024|82310400026|35042699022|36860700013|14060799003|376014;",
        "X-Microsoft-Antispam-Message-Info": "\n x015/4baYayWwwgKWJBSSp5EIPfK5WVUcREWIm9NIGuojXMBO1FFUJ7DGAgh7Cndl/R+mBBpQ99dz99/3mAoyCwdV5n0y3MPY2PPocKwz1OdP7ww9fBKsOO3Un+YVII5ktPHxXMBRa8fPLmjDcijhlIfL4i5f4EaLQy95cfGdIZeut6bZ70Y/9GM81eqwPEEq0eyYZgmH56uuG7uAvhbho5nhs6k5GVxf3BKH/YeTOUYB7ZE3vpY+jtInAkw1eRdIln3lqF9tn10LzLkwy3b4V7Rk6ILxohMIDJvFNJFqTwD7epQ7Pi/UDJmF/qxDuKoMkSJcuSpYdS+mksOdme4FKs617neFRdlwvl15O39kdKej5nCl0xyM6eIymRXfnZCfpZdCKW46cmUb6ZX4k5/AMCoKSJkg912IRtHqlf5EvM2I6QZTzeXCldpASLIR6cEDcp4UYV60XboFeuPUNIKY4NO0TtF8DETDVkLs6IFAr/7V3TcZ1Tu2BMfyogOzBmK/5ZQf/l/D9RsNBkf4vRo1VVRgf1nGhDK3sc6INMIwQUuBpnF3bOMh1WXIQ5pKPrFr81Yb32RrVkXn+u3Wk8VYNmqcJV4EtWiWUHrMFZQRwDOKN/Ug+4o6a8qHkmBH0S6r9HZ9cTG74578gJUe9UspMJc4k2rmPe+2VoC84sGSO83aHMvU9LJjgJHEMbAc5J4RyUkWe+YkY23ZM7AoudyiJZ2p815S9KBE6S+6mWBjgLxFsI9XNOn/2nhujrMskEEavOkotuKmPcUepx/Py3pbmeRAiUXNAKBaSCK95IfwSml3qa1+64ffcsdCqddWdMGChMAV5MW3gUq5KnrlX+VQrlTLWr1+1HAl8PAdAaVSkGbV77D9rPRK14G+lpXkGUMyOaRA/qiJK3bM9ve7d32D4UbO/GpWG3QqAicn1IYXAY0juVHS4XyGkXldExerHWJhxJJlRipslrZD1MUI5ugYPdQoI9DyVggGs4Btfhro3I47fjPXJil20Q1OU55uuYtdyCk2mfdRIW94UzjeOWz+FHqQRqEpz0AJlAPQ5XOSpl9EwIrIcOJCm7f4sTVrB8RzjvpARFCtlsOmPRznQLyOC0Hp12/ltFJOJV4d1hof0IZYOeMEnziM0SVuoARAGNK8gF/L0RnjenEzF7bEFddza0LK9LjaCnvXOrDXX4B6BFlCqnMle7fjttg0jsiiB3lw0qP+vk3f+3Y7FxYux6YRtzgOgk8kcHPHhdldVkTrbLxL4BPV+NO8IosEyBSGffgSv473gOOe6MZ8dYeO0LfBGbM9L9JN1Qs3yr+HBG0x47NyFBBMXF0wW7c6HCiSc6lbYwPOXcqVGspw3RghlFT8HYhoOS8j/JX8UHWhrM7Q00SuUyoE4s44HiCwfSt+MWHmkgWYfkA14EIkQel6MlWbHYXkpH1hWSNBIYjDf40IlEAMubztYXmJfl2Rtpg+2Z1Qb/bB5jLZV5NO0mT1tKGg3IA1yf0b4XQ/yLbXI9/ubFRohASpgwQKtyQ84HVML6/3PZenmdVniW1AXOJl4x+k0qMgaiO0hVzJJuHJ5sSNzna3yFmzyOwiOawTeIaAaWNpoB7P+qGXTOaZF6RdG9roU0LAISkOqpVWHo/9PLdSMmLyC5kFtvHezLk8TUOD2fJLJHYIaPalyggMrLinmgu+A==",
        "X-Forefront-Antispam-Report": "CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com;\n PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(1800799024)(82310400026)(35042699022)(36860700013)(14060799003)(376014);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n Hc/gmsDI7wsjgmtUSRa1eKyVz6DMzq+BNJZmETGZ5CSG9zexX6SANq8owVlQoaAjH1H6sxNfKzPTQwEeMgoBVwgDs8V/uuFF6Vt21+SptPSXGxJxECfCSHa6Sqhud8uj8vxFWBRe1JCz29KfxHV6PV1HOCE3NKPia2KX6cUFDGJCXkjA9MIjfbx9AIhp/3tdsmIQeCSrKW1haaJtu4yrAEpgtNhdR/QcMJQmvQlqC0aR1Lb/7EfBCIQAF1yguhDfG8buxiBzVfl+aN+SlBB1e/hezHFkBJBimJ8frkEldIqHMEAkoxSQcCUgIlODzMN8/FveEekkxz9AwnyEcU2kMzIRA1GVsZJqHP1I0uxPKBXR8CNcFlWxfKNWTIwSO66A2+ahReViclvcqqioByIMc8FHhTq8htG6LqMeVTUiy34M/7k+QtJLahECSd+IWd8A",
        "X-OriginatorOrg": "arm.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "16 Feb 2026 17:27:04.1904 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n ce42c19e-ab8d-4965-d877-08de6d809a29",
        "X-MS-Exchange-CrossTenant-Id": "f34e5979-57d9-4aaa-ad4d-b122a662184d",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129];\n Helo=[outbound-uk1.az.dlp.m.darktrace.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n AM1PEPF000252DB.eurprd07.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-BeenThere": "libc-alpha@sourceware.org",
        "X-Mailman-Version": "2.1.30",
        "Precedence": "list",
        "List-Id": "Libc-alpha mailing list <libc-alpha.sourceware.org>",
        "List-Unsubscribe": "<https://sourceware.org/mailman/options/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe>",
        "List-Archive": "<https://sourceware.org/pipermail/libc-alpha/>",
        "List-Post": "<mailto:libc-alpha@sourceware.org>",
        "List-Help": "<mailto:libc-alpha-request@sourceware.org?subject=help>",
        "List-Subscribe": "<https://sourceware.org/mailman/listinfo/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=subscribe>",
        "Errors-To": "libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org"
    },
    "content": "If GCS is enabled (see tunable glibc.cpu.aarch64_gcs), we lock all GCS\noperations (including status, write on shadow stack, and push to shadow\nstack) unless OPTIONAL policy is used.\n---\n manual/tunables.texi                         | 50 ++++++++++++--------\n sysdeps/aarch64/dl-gcs.c                     |  6 +++\n sysdeps/aarch64/dl-start.S                   | 21 +++++++-\n sysdeps/unix/sysv/linux/aarch64/libc-start.h | 29 ++++++++++--\n 4 files changed, 80 insertions(+), 26 deletions(-)",
    "diff": "diff --git a/manual/tunables.texi b/manual/tunables.texi\nindex cacc0ea652..06443f6a91 100644\n--- a/manual/tunables.texi\n+++ b/manual/tunables.texi\n@@ -604,42 +604,54 @@ This tunable controls Guarded Control Stack (GCS) for the process.\n \n Accepted values are:\n \n-0 = disabled: do not enable GCS.\n-\n-1 = enforced: check markings and fail if any binary is not marked.\n-\n-2 = optional: check markings but keep GCS off if any binary is unmarked.\n-\n-3 = override: enable GCS, markings are ignored.\n+@itemize @bullet\n+@item @code{0} = disabled: do not enable GCS.\n+@item @code{1} = enforced: check markings and abort if any binary is not\n+marked, otherwise enable GCS and lock all GCS features.\n+@item @code{2} = optional: check markings but keep GCS off if any binary\n+is unmarked, otherwise enable GCS but do not lock any GCS features.\n+@item @code{3} = override: enable GCS and lock all GCS features, markings\n+are ignored.\n+@end itemize\n \n If unmarked binary is loaded via @code{dlopen} when GCS is enabled and\n-markings are not ignored (@code{aarch64_gcs == 1} or @code{2}), then\n-the process will be aborted.\n+markings are not ignored (i.e. @code{aarch64_gcs == 1} or @code{2}), then\n+@code{dlopen} will return an error.\n \n Default is @code{0}, so GCS is disabled by default.\n \n This tunable is specific to AArch64. On systems that do not support\n Guarded Control Stack this tunable has no effect.\n \n+GCS features (or operations on shadow stack) such as @code{STATUS} (i.e.\n+enabling and disabling GCS), @code{WRITE}, and @code{PUSH}, will be locked\n+for the @code{enforced} and @code{override} tunable values.\n+\n Before enabling GCS for the process the value of this tunable is checked\n and depending on it the following outcomes are possible.\n \n-@code{aarch64_gcs == 0}: GCS will not be enabled and GCS markings will not be\n+@itemize @bullet\n+@item\n+@code{aarch64_gcs == 0}: GCS will remain disabled and GCS markings will not be\n checked for any binaries.\n-\n+@item\n @code{aarch64_gcs == 1}: GCS markings will be checked for all binaries loaded\n-at startup and, only if all binaries are GCS-marked, GCS will be enabled. If\n-any of the binaries are not GCS-marked, the process will abort. Subsequent call\n-to @code{dlopen} for an unmarked binary will also result in abort.\n-\n+at startup and, only if all binaries are GCS-marked, GCS will be enabled and\n+all GCS features will be locked. If any of the binaries are not GCS-marked,\n+the process will abort. Subsequent call to @code{dlopen} for an unmarked binary\n+will result in @code{dlopen} returning an error.\n+@item\n @code{aarch64_gcs == 2}: GCS markings will be checked for all binaries loaded\n at startup and, if any of such binaries are not GCS-marked, GCS will not be\n enabled and there will be no more checks for GCS marking. If all binaries\n-loaded at startup are GCS-marked, then GCS will be enabled, in which case a\n-call to @code{dlopen} for an unmarked binary will also result in abort.\n+loaded at startup are GCS-marked, then GCS will be enabled but GCS features\n+will not be locked. In this case a call to @code{dlopen} for an unmarked binary\n+will result in @code{dlopen} returning an error.\n+@item\n+@code{aarch64_gcs == 3}: GCS will be enabled and all GCS features will be\n+locked. GCS markings will not be checked for any binaries.\n+@end itemize\n \n-@code{aarch64_gcs == 3}: GCS will be enabled and GCS markings will not be\n-checked for any binaries.\n @end deftp\n \n @node Memory Related Tunables\ndiff --git a/sysdeps/aarch64/dl-gcs.c b/sysdeps/aarch64/dl-gcs.c\nindex e1d1db4852..841d6428d6 100644\n--- a/sysdeps/aarch64/dl-gcs.c\n+++ b/sysdeps/aarch64/dl-gcs.c\n@@ -147,3 +147,9 @@ void _dl_gcs_enable_failed (int code)\n {\n   _dl_fatal_printf (\"failed to enable GCS: %d\\n\", -code);\n }\n+\n+/* Used to report error when prctl system call to lock GCS fails.  */\n+void _dl_gcs_lock_failed (int code)\n+{\n+  _dl_fatal_printf (\"failed to lock GCS: %d\\n\", -code);\n+}\ndiff --git a/sysdeps/aarch64/dl-start.S b/sysdeps/aarch64/dl-start.S\nindex 3b5ff2cccb..c278485cd3 100644\n--- a/sysdeps/aarch64/dl-start.S\n+++ b/sysdeps/aarch64/dl-start.S\n@@ -35,12 +35,13 @@ ENTRY (_start)\n \t/* Use GL(dl_aarch64_gcs) to set the shadow stack status.  */\n \tadrp\tx16, _rtld_local\n \tadd\tx16, x16, :lo12:_rtld_local\n-\tldr\tx1, [x16, GL_DL_AARCH64_GCS_OFFSET]\n-\tcbz\tx1, L(skip_gcs_enable)\n+\tldr\tx22, [x16, GL_DL_AARCH64_GCS_OFFSET]\n+\tcbz\tx22, L(skip_gcs_enable)\n \n \t/* Enable GCS before user code runs.  Note that IFUNC resolvers and\n \t   LD_AUDIT hooks may run before, but should not create threads.  */\n #define PR_SET_SHADOW_STACK_STATUS  75\n+#define PR_LOCK_SHADOW_STACK_STATUS 76\n #define PR_SHADOW_STACK_ENABLE      (1UL << 0)\n \tmov\tx0, PR_SET_SHADOW_STACK_STATUS\n \tmov\tx1, PR_SHADOW_STACK_ENABLE\n@@ -50,6 +51,19 @@ ENTRY (_start)\n \tmov\tx8, #SYS_ify(prctl)\n \tsvc\t0x0\n \tcbnz\tw0, L(failed_gcs_enable)\n+\t/* Check if we need to lock GCS features.  */\n+\t/* If the aarch64_gcs tunable is either 0 or 2 do not lock GCS.  */\n+\ttst\tx22, #-3\n+\tbeq\tL(skip_gcs_enable)\n+\tmov\tx0, PR_LOCK_SHADOW_STACK_STATUS\n+\t/* Lock everything including future operations.  */\n+\tmov\tx1, ~0\n+\tmov\tx2, 0\n+\tmov\tx3, 0\n+\tmov\tx4, 0\n+\tmov\tx8, #SYS_ify(prctl)\n+\tsvc\t0x0\n+\tcbnz\tw0, L(failed_gcs_lock)\n L(skip_gcs_enable):\n \n .globl _dl_start_user\n@@ -75,4 +89,7 @@ _dl_start_user:\n L(failed_gcs_enable):\n \tb\t_dl_gcs_enable_failed\n \n+L(failed_gcs_lock):\n+\tb\t_dl_gcs_lock_failed\n+\n END (_start)\ndiff --git a/sysdeps/unix/sysv/linux/aarch64/libc-start.h b/sysdeps/unix/sysv/linux/aarch64/libc-start.h\nindex 9eecc557fd..24eb5ce967 100644\n--- a/sysdeps/unix/sysv/linux/aarch64/libc-start.h\n+++ b/sysdeps/unix/sysv/linux/aarch64/libc-start.h\n@@ -25,9 +25,17 @@\n \n # ifndef PR_SET_SHADOW_STACK_STATUS\n #  define PR_SET_SHADOW_STACK_STATUS\t75\n+#  define PR_LOCK_SHADOW_STACK_STATUS\t76\n #  define PR_SHADOW_STACK_ENABLE\t(1UL << 0)\n # endif\n \n+# ifndef GCS_POLICY_DISABLED\n+/* GCS is disabled.  */\n+#  define GCS_POLICY_DISABLED 0\n+/* Optionally enable GCS if all startup dependencies are marked.  */\n+#  define GCS_POLICY_OPTIONAL 2\n+# endif\n+\n /* Must be on a top-level stack frame that does not return.  */\n static inline void __attribute__((always_inline))\n aarch64_libc_setup_tls (void)\n@@ -46,12 +54,23 @@ aarch64_libc_setup_tls (void)\n \n   _rtld_main_check (main_map, _dl_argv[0]);\n \n-  if (GL(dl_aarch64_gcs) != 0)\n+  uint64_t gcs = GL (dl_aarch64_gcs);\n+  if (gcs != GCS_POLICY_DISABLED)\n     {\n-      int ret = INLINE_SYSCALL_CALL (prctl, PR_SET_SHADOW_STACK_STATUS,\n-\t\t\t\t     PR_SHADOW_STACK_ENABLE, 0, 0, 0);\n-      if (ret)\n-        _dl_fatal_printf (\"failed to enable GCS: %d\\n\", -ret);\n+      int r0 = INLINE_SYSCALL_CALL (prctl, PR_SET_SHADOW_STACK_STATUS,\n+\t\t\t\t    PR_SHADOW_STACK_ENABLE, 0, 0, 0);\n+      if (r0)\n+\t_dl_fatal_printf (\"failed to enable GCS: %d\\n\", -r0);\n+\n+      /* Do not lock GCS features if policy is OPTIONAL.  */\n+      if (gcs != GCS_POLICY_OPTIONAL)\n+\t{\n+\t  /* Lock all bits, including future bits.  */\n+\t  int r1 = INLINE_SYSCALL_CALL (prctl, PR_LOCK_SHADOW_STACK_STATUS,\n+\t\t\t\t\t~0, 0, 0, 0);\n+\t  if (r1)\n+\t    _dl_fatal_printf (\"failed to lock GCS: %d\\n\", -r1);\n+\t}\n     }\n }\n \n",
    "prefixes": [
        "v4",
        "1/2"
    ]
}