From patchwork Mon Sep 1 21:10:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cupertino Miranda X-Patchwork-Id: 119308 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EDDC03858C2C for ; Mon, 1 Sep 2025 21:11:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EDDC03858C2C Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2025-04-25 header.b=e+dIV1Dp; dkim=pass (1024-bit key, unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com header.b=mVga9VMt X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id D3BED3858C41 for ; Mon, 1 Sep 2025 21:10:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D3BED3858C41 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D3BED3858C41 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1756761026; cv=pass; b=NNMWnZRmGJFOVVhJrwkf2Knc6yDC/MwqShj7us3eswZZkI2NuedtC5ff0643Yu4/Xc5hF3DE/v2fLdMDTpA1O+w2z3P8TkhxnDQo5d5zxQX1KLJKfwfCEKAEI4AYkTVlpt0M2LjmjUyFCC7ouFgljaZ+xpd5T5eVMakv5tbJygo= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1756761026; c=relaxed/simple; bh=HHrNycJQK1U715hJwT4fqDl471BrkCAJ7e+mouzo53U=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id: MIME-Version; b=N4EUCn5vIP7GcP2HlWmWWpwb9vu4oory4F85bKsqLOTdtKU74W5o0rRJAVwAqb+hgJGj+d7OGJlZOqzfzh/FSY/IhS26qxPi/3LPR/uud7NOvcFqDCxLKVSkOHqAVvA/SR86+itUTaDRXNyHqM4e9Hl+70wCcb3vnEJrw1xfLio= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D3BED3858C41 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 581FMt6K030514; Mon, 1 Sep 2025 21:10:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=corp-2025-04-25; bh=6TiStUKObQ5cn8mn szFgQZJw5kEx+V07Z5uto4ZJk5M=; b=e+dIV1Dp7y8KZsDdabs71PCUM9sUeR4a 4kmuJiCDqd2O3EqlIqPzFM2bUJloShjWkQhuA6153jjqyFvlIE+Zdj/eWuqoBCd1 SSCXoBXfU/wVsJYTfbRDo/r4CBP1OaloGLD6So4zCzU2i8ElfQYDf/HtCQiQn9PD TU22VzUNJldemUT3K+IOY/YDcfO3bbTqDBFRgJ0CMY0Nq+g1TKLB5ZsvNq9MxpuM GsQD26TWHYyydO7/jKIyzez78zLRR48Gxr2Tc+YYjuDaBgh/Es537jNZGKG/0NwT NqTj3FfzBGZRDmzcvsu71vIiwlQWzfpy8uyfYeqwOS6chgX+BE5BkQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 48usmnaw7x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 01 Sep 2025 21:10:22 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 581IUcKg024980; Mon, 1 Sep 2025 21:10:21 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam04on2063.outbound.protection.outlook.com [40.107.102.63]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 48uqr85cxa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 01 Sep 2025 21:10:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FR5jn0pHn2s2er6AQK3m9na9g2JiOEs6kCQHvRnCLErtEP2SEQ0M4eDdzgB/8ZAZkDKCac3AScAj1Icj7rQzBwUr48OAdpIeP1aS57EA98vp0f/38G92nGcvuKD2hzvs8Hbiz0WbJfoNpWjpje2WW58LGoQsQeRoPQHF0lnm29QjaI8g2YBk/x76lQ78EJBC0yVMnb5mc1LyCZ9LFmxDaM26IGpW6z1J7TvA3l3fVsm1mLo9YVJwzYLg7JFizlWT9bkHUhA/ytW7FsOmhnn+t7C8yt8aSJC0YE/5jq61XXj6XFe7IZA4Bw0Io6ATkZ5R3RfNIu6G3n7V5CgrvA0rSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=6TiStUKObQ5cn8mnszFgQZJw5kEx+V07Z5uto4ZJk5M=; b=oivXEQda7+9JNSP3n3mO2tWhAAWA4qgwjOZeDXJrP3jvLgxe9UZO9Pqbjkpl3yeWA+uQrbFYkGns+NlqyHBXqcOeJZLkDYsD9QaG6o9E7DAew2zI7yq6nF1qrl2SUlj7oGrGYK8uHz/9ryzPPepV0xzkWQdIxQbEbgty2yqDc8MU7Ii/kzt1cBtdlapLby/dQNfnGH/9TcdrCuCgH8deJLNG8U3R8IJ/TjInKAXXbhT1WA/EWDYCsWQBZQFldZ43mK1ipQiBCLtiJiNNAtRJL/4/kRFfNQIaTXOuwc7g0ZO4O5Q1HhZOj9UXZrjFHEobXU9Y2FYTUcZm0ORTTo4e3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6TiStUKObQ5cn8mnszFgQZJw5kEx+V07Z5uto4ZJk5M=; b=mVga9VMtmE12a1J2MqiosyewJCT+/tUBm4MzF+2b1SiJecSEPNrhTTng4r3yXgLydGedb6CQSHQrhTsmsWX/7Ax/TATmg5XewYd05QNn7ZhxYB2fBkTdhlXynRJwk/AHYigEDLsz62O77Ijw0L6KLj/XPkFlsJjdB1xWyLPGAto= Received: from BY5PR10MB4371.namprd10.prod.outlook.com (2603:10b6:a03:210::10) by DS0PR10MB7361.namprd10.prod.outlook.com (2603:10b6:8:f8::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.21; Mon, 1 Sep 2025 21:10:17 +0000 Received: from BY5PR10MB4371.namprd10.prod.outlook.com ([fe80::d2e6:4de0:fdd1:fb2c]) by BY5PR10MB4371.namprd10.prod.outlook.com ([fe80::d2e6:4de0:fdd1:fb2c%4]) with mapi id 15.20.9073.026; Mon, 1 Sep 2025 21:10:16 +0000 From: Cupertino Miranda To: libc-alpha@sourceware.org Cc: jose.marchesi@oracle.com, elena.zannoni@oracle.com, adhemerval.zanella@linaro.org, fweimer@redhat.com, Cupertino Miranda Subject: [PATCH v2] rtld: Enable MTE for stack when specified in .dynamic Date: Mon, 1 Sep 2025 22:10:07 +0100 Message-Id: <20250901211007.128592-1-cupertino.miranda@oracle.com> X-Mailer: git-send-email 2.30.2 X-ClientProxiedBy: LO2P265CA0282.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a1::30) To BY5PR10MB4371.namprd10.prod.outlook.com (2603:10b6:a03:210::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4371:EE_|DS0PR10MB7361:EE_ X-MS-Office365-Filtering-Correlation-Id: 2b52e195-2ede-44c0-74b1-08dde99bf311 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|376014|13003099007; X-Microsoft-Antispam-Message-Info: DVytG0c8wyOzI7dzvn1aJozf3f9eUu6mB9fGHe5jmUY9bKkPpeR846Iw7hqc1ofipx93XLcmTTwamP9QdjWQcfCeyqe0i5tX+AlqOhtwnK+N46F5sRabK8UO80WlU0/gdnwLfzio9nw4Fu+NCeEZRPMIpWnuLjQ5iEUXT50I1gh9PH3vvKZQRrbNoL1deNLGbdjRGbG1VP8Laonuaa0r+S6ZQ6jtTMED3RUIBf9pyN0+32jAj3gzlZ+eriv9hbUxLv85+R5tuCdskYzoQEBB1JGzHv5k8FKCCjtvMHz+0X4kGLGVM/92tpCGEFpZX0QaXpmgzNVXZ15uWwHymMkdlcGLPZ+LOE0f7qtfydvzdMBVAwdx4SW9VURB1Z4HZX4eAyTGlu87CmkNRXRKxQ2nWiOWVIDbiCjvEsMUJyyXVsnhGyr/0O7v41xxpGzUTKr0DFT1t4WGXWFScYnLCkeShTZ2dslClvkIj4Tegx6iee4RXG4hSZnNHNws8MM7Y8lWk24DjrnKufdU5kSGQDmO+q9zOy92FFDvB1jZpTZygu0Ovov+HzneNzsdLZw6rAzDt+VocLnMlkkqs/8sV8cuzdlYm8eDQuBwlxbLixbZF1BF/awSyde9WLXCrjMdEyhem+XUBNdY0jARHw6z6PUGNmgrKZzYgwaAp0oUlptV/T0Rh5785zDTEE037+gQOvzONp8eBlSUsFz095kIxBDnTHg6O1iebCILrUguUnYkd/4pVjUci9PyVRI4VNytkjCXQeQUJgcCXZweksDVmlwlkyX2MOkdyukiuueT4bPUk8Hd32rP8+knCAKI5pIgjiN1JvnXvVrUBxsRvd68DoQcQGcJyJw/DJB0hMUTxjBoSeqM3PK5sJWh9CC6h4E5Q7HIN55zA81gAQbah5UiWR6RCOCiDBy4nqcQh5QtrsTf/GIpJ565fklfQh1a0GdGcF2HspqvAwAv/m9XTb3eTZyKEOFAN2mHvwsA5Yo7igxWXojv405SlOqpLNKD7IHStLkNjkIrZO7VPefHUlrgD/i/A6ZOFR9CB27BKRfMpmRt+qBFwpk0Kg1B9CDamkggPZRdr2iqRIPOCDAlxqltCjrZq1J6ERAcl3Ptv4sh172iGJGR00bQ/worHPx5gP2PWze9XIivEHcUywbhNjw0oW8wOly3Svd+razRQnTjXasxReVCait55RxgIG5xJODiVeJv5gEflJAEwpPFQ60lgY4xrKSPMZTj8ElEHa3NnZe039F7Lkghc+wtCK2pyPQm5zRd2f9exc7eu00t4uemTjq2BzeQnzUdhozbxYk+5krur9cQ795FtmjCDz8zMnB2vhH1WVGX8VKMw+yCsV7EO0RkrJIScBG6o+bwv9yvA7M5FaYIKE5J2ocHXc16fXa1SilCGbOXQNOSogJsy8bKJPOcNgVcbdnCzWXsjL6IjkaIeOU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR10MB4371.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(13003099007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RIbHORl2/YDZbM6ksLjTqZMpFQXxgTRWNr0PMjPN7/y0zZi1+PJsThorLI90IQwVxRMxO0hfUk5iSSJZ3IRvj+X79fNlm34A0FeCYWI66niAHElcxxq7oMhjA4pOr/Emkew0vbxkVChjMPY807sEVG4O2mpAti4bqNzaTvKJeC4ihahCtEWDrvXiSif+FXuYxxQeiCXVU1Tdoon0u4wp8WVQYi5u5S+wgA7dsNXByBPm1z4EDY6KMoY/qzV8tr2Snyn3IjWIZ/yOaLWTFiMT5OHGYTs09oMh8hTQKqyYpGEJanpeq6l2J8z8cXSa5/Uue7B6jXq5L88t+YAtw/Zs66q+/NPmg1KdzyRsV1eJgzlhfMXhGqZFGdikRfJdplvuFHrFTlVFD7v5+Ak1x97cmPfFxqAapYq4q85KmxJ4UOwXOFKJiI9V75k0u9G6yN5AocgwmtwrGKVRSMApTt47JlWLJWFvESRPjAsi1cCdttMGZUVTGVdqxBr38fA51x110jO8Tx2uqAI+QGFM3AiYSF3RgVptbuc8c+8Qvqrsf/ySI4ScEulAIt+NbMjeMsYYI0TL/2HkIRvGPQZTBr4Q53nkx4pGR5l/MTc+smFQKS2xVykNxB1+OBaJQZ+IcSybVQVJXXpj1f6Kgi0g+s3VYojUzo55GaDRAzfTymk0TtuprOwNZG0b/StDUZ+v+4as4jsEOptbIQZJhtrz9BcID58gW051SeVPC3ulx145RPnLOugMrAg0hHbfKyTFxNq349bF9EK4zXB5S9aSgw17Ei1yR5/6E1d7VDwGoIKtn++6YslDaCblMAtxiDVpZFWCIdkS8LORk5v88kiut4Kk2Tj+l546r2Su7UynLVpau9pKQDmls7j6tZs215N6oHC3Sm1gWWIPXYYBjahfGIDiMf2en8oQGZFkYp+AM75v8xxXPwSUPYpW+SWdQdspDin5zmiIpIHkVIawSCayXPNF1Q6q/0BZqH4iWSuGKibcNe10AKqyRH965t7NKK1+XXQoe9eSbD6VvSvmVAR0QbepD+0hy7x88t12afLnf/CbwrzleAy0DVptvNa0yp4vfpfgTfdY+8PCYpNEjVYxcFF6+XzhlLxq5+tJJ6GtgIhkrChQyUh/9vMojbwThJ0T65NeIYv2e0ZMyv3yjZuhs1ou6s/ligdCRHco1wMEOi1xN/r8PqN93CWM7T282ws6ClpkJrbJ9KPqy7BkuecV0lkZxrw4dqMwZMKGSu167XHfH4gE17HqISMEg7klgVRWq883RzfBEs/k88M4jRBMtZZypCEsGqb4WijmXCInxblNGLxGZi4TQbd5sgWOUEdERisoN5Fpz2GF1Ra+v8/EUWDckOkB6aAU3lnw8/XBlg+5vQSpGUZ+Ika+xM7M52ofYbSu/NySJ3geyKW+FQfoHg3H0GXxLBq6n/999pfjfR5voUx35iFUbL2hrhA9MJHihR+6lgxlyQzp04RkMxxvE1F6YB0qRZjOI2Dy6licw1ZUBKy8MimRP9VTUGB+DMVOPQZL+HZps8hJG6gNPt/mfnET3XbAd3++HeJtaziyZzdt1d2f5f6KZ5aYdWVtsnlC67c7RSDsbv6+6xHRJ1DiDA+Gww== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 8PWgmPXvsIH9xjdO7dAdsd4Pg2PaFIhpxImtndD7rEpDegRCKKFCg521EhxXo6MBtLEcWz4M7u5lObh0lFr9nm9yFjDp14G6sOtPs7GAaJG681R79lOIAmRoMaB3Jb2yx3GQCUGOZ8thuBaNjthi+eAgjOSfvIMx38AiFhB6PoI8LXUqY5N2CL+8on8Zyd/XS+ZGBxhuThid4fIGYttEFXpQ5Bu5aFoZRDSFH+n8a8Pw9eGwQElam//3WdwNMmaJM5UjG7Fzr7l2lDRbLJQCmJ1q2GFKjRVkRX9F/TAXkmfZ1WkwBz++Gmolv3jCqH+z2CU8STrkDPKg8HBdkURZG1XLurPKniipAcHPfemp2QPqSK53wkoQ68slWrMSdl+OK12hoX5sODQPNq/6zXxdWDRxFlqaTksHwTLeCJ9AbBf2s4SqtgMh5F37slKi2BFWWmjgaQgoH03dOnQY5aAUDiqlF4azxgv7ELt60zx9Dlzmi33EQ4KkYIC8W2v5mQr2oQXgehjB1w3/rDzw6Y9MsU5Eq9KhShou/1zzqjmHlV09rGVG07UNYsSKRkDv0SO6gUD+73ZAXUC07SLK490op8p3r3a411odNpW0MPixiAw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b52e195-2ede-44c0-74b1-08dde99bf311 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4371.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2025 21:10:16.6637 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UskDfloijDX93cuP3Ym0Aj6tA6juMbbmmjaWtx0xUeX7y5FE7YaMM4/hDNhpFMCXcCGHrYy1Xv00d9xYj7I8N4xw5z/GkuOo62liu7GUeI0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7361 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-01_08,2025-08-28_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 spamscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509010222 X-Authority-Analysis: v=2.4 cv=D8xHKuRj c=1 sm=1 tr=0 ts=68b60bbe cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=NEAV23lmAAAA:8 a=mDV3o1hIAAAA:8 a=l_aiV7YukqieLAHD4PwA:9 X-Proofpoint-GUID: wy9vwkf4BLQlF1WKczLYXKJ3_lYxkrhN X-Proofpoint-ORIG-GUID: wy9vwkf4BLQlF1WKczLYXKJ3_lYxkrhN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODMwMDAzMiBTYWx0ZWRfX80N/dFI6OTsy wKJSy0+bO+D4mhLsEyDlhKy915rG+X36g+pOlNAdNdEiicZNOLehAG863bRFiJv+Xazg2VVtS1W LUPxL6uFYgMqudaUJs+XAv/9YnhL+/uG0XrsvxCz5WMXnHHe3YEw7wbqzsWsOXgXGsqViRSATUD xfW95vS+TigcuLlo9xSfLBeOJstxHmcmVoryZzAD1JRMbhKP0btSWFo783+JN6Sp1efcAqoIJ4f wQI6ZBBjj/ckDWgntm1JDwhobSZuc7XWDDiQRS7/iVgzK1prmXd8fDKAHkAahMj3tPRHBN6BOCB VjC0KPwpggLx8MsUZ/wSmNQJLxGXKKiB6Ifj895uX2IF6+aHfet2PUy4f+S94rlVyXho8Zf/vNI tc24IU8f X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Hi everyone, This is v2 of MTE stack support patch series. This patch was adapted to conform with changes from: commit 3b2b88cceeb79f73a72367800d91599e2af4bb39 elf: early conversion of elf p_flags to mprotect flags It still does not introduce any tunable options. They were initially discuss in v1 without any specific conclusions of what should be done in that regard. Looking forward to your reviews. Cheers, Cupertino Changes from v1: - dropped changes related to stack creation for threads. No longer needed. - Adaped code to changes introduced with: "elf: early conversion of elf p_flags to mprotect flags" MTE stack tagging enabled executables are flagged by setting the dynamic array tag DT_AARCH64_MEMTAG_STACK as described in section 6 from: https://github.com/ARM-software/abi-aa/blob/main/memtagabielf64/memtagabielf64.rst Also the mode in which MTE would react to MTE faults is set by the tag DT_AARCH64_MEMTAG_MODE. This patch verifies for the presence of those tags in the dynamic array and performs mprotect on the main application stack map with the extra PROT_MTE flag. --- elf/elf.h | 7 +- sysdeps/aarch64/Makefile | 3 +- sysdeps/aarch64/cpu-features.h | 14 ++++ sysdeps/aarch64/dl-mte.c | 78 +++++++++++++++++++ sysdeps/aarch64/dl-prop.h | 4 + sysdeps/unix/sysv/linux/aarch64/Makefile | 5 ++ .../unix/sysv/linux/aarch64/dl-mte-stack.c | 42 ++++++++++ 7 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 sysdeps/aarch64/dl-mte.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/dl-mte-stack.c diff --git a/elf/elf.h b/elf/elf.h index 2f29a47c0b..2c7b463769 100644 --- a/elf/elf.h +++ b/elf/elf.h @@ -3039,7 +3039,12 @@ enum #define DT_AARCH64_BTI_PLT (DT_LOPROC + 1) #define DT_AARCH64_PAC_PLT (DT_LOPROC + 3) #define DT_AARCH64_VARIANT_PCS (DT_LOPROC + 5) -#define DT_AARCH64_NUM 6 +#define DT_AARCH64_MEMTAG_MODE (DT_LOPROC + 9) +#define DT_AARCH64_MEMTAG_HEAP (DT_LOPROC + 11) +#define DT_AARCH64_MEMTAG_STACK (DT_LOPROC + 12) +#define DT_AARCH64_MEMTAG_GLOBALS (DT_LOPROC + 13) +#define DT_AARCH64_MEMTAG_GLOBALSSZ (DT_LOPROC + 15) +#define DT_AARCH64_NUM 16 /* AArch64 specific values for the st_other field. */ #define STO_AARCH64_VARIANT_PCS 0x80 diff --git a/sysdeps/aarch64/Makefile b/sysdeps/aarch64/Makefile index bb97d31355..522813d6b9 100644 --- a/sysdeps/aarch64/Makefile +++ b/sysdeps/aarch64/Makefile @@ -11,7 +11,8 @@ endif ifeq ($(subdir),elf) sysdep-dl-routines += \ dl-bti \ - dl-gcs + dl-gcs \ + dl-mte tests += tst-audit26 \ tst-audit27 diff --git a/sysdeps/aarch64/cpu-features.h b/sysdeps/aarch64/cpu-features.h index ef4e947e8c..b60b804e57 100644 --- a/sysdeps/aarch64/cpu-features.h +++ b/sysdeps/aarch64/cpu-features.h @@ -66,4 +66,18 @@ struct cpu_features bool mops; }; +#define ARCH_MTE_MODE_SYNC (1 << 1) +#define ARCH_MTE_MODE_ASYNC (1 << 2) +#define AARCH64_CPU_FEATURE_MTE_STATE_STACK (1 << 3) + +#define AARCH64_CPU_FEATURE_MTE_STATE_MODE_MASK (0x3) + +#define AARCH64_CPU_FEATURE_MTE_STATE_MODE_MASK (0x3) +#define AARCH64_CPU_FEATURE_MTE_STATE_MODE_ASYNC (1) +#define AARCH64_CPU_FEATURE_MTE_STATE_MODE_SYNC (1 << 1) + +#ifndef ARCH_INIT_MEMORY_STACK_TAGGING +#define ARCH_INIT_MEMORY_STACK_TAGGING _dl_mte_stack_protect +#endif + #endif /* _CPU_FEATURES_AARCH64_H */ diff --git a/sysdeps/aarch64/dl-mte.c b/sysdeps/aarch64/dl-mte.c new file mode 100644 index 0000000000..b7d435bc53 --- /dev/null +++ b/sysdeps/aarch64/dl-mte.c @@ -0,0 +1,78 @@ +/* AArch64 MTE Stack functions. + Copyright (C) 2020-2025 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include +#include + +extern int +_dl_mte_mode (void); + +void +_dl_mte_stack_check (struct link_map *l, const char *program) +{ + ElfW(Dyn) *d; + bool mte_enabled = false; + bool mte_mode_selected = false; + for (d = l->l_ld; d->d_tag != DT_NULL; ++d) + { + if (d->d_tag == DT_AARCH64_MEMTAG_STACK) + { + GLRO(dl_aarch64_cpu_features).mte_state |= AARCH64_CPU_FEATURE_MTE_STATE_STACK; + mte_enabled = true; + } + if (d->d_tag == DT_AARCH64_MEMTAG_MODE) + { + if (d->d_un.d_val == 1) + { + GLRO(dl_aarch64_cpu_features).mte_state &= ~AARCH64_CPU_FEATURE_MTE_STATE_MODE_MASK; + GLRO(dl_aarch64_cpu_features).mte_state |= AARCH64_CPU_FEATURE_MTE_STATE_MODE_ASYNC; + } + else + { + GLRO(dl_aarch64_cpu_features).mte_state &= ~AARCH64_CPU_FEATURE_MTE_STATE_MODE_MASK; + GLRO(dl_aarch64_cpu_features).mte_state |= AARCH64_CPU_FEATURE_MTE_STATE_MODE_SYNC; + } + mte_mode_selected = true; + } + } + + if (mte_enabled && mte_mode_selected) + { + int errval = 0; + _dl_mte_mode (); + GL(dl_stack_prot_flags) |= PROT_MTE; + + uintptr_t page = ((uintptr_t) __libc_stack_end + & -(intptr_t) GLRO(dl_pagesize)); + + if (__mprotect ((void *) page, GLRO(dl_pagesize), + GL(dl_stack_prot_flags)) != 0) + errval = errno; + + if (errval) + { + const char *errstring = NULL; + errstring = N_("cannot set stack with PROT_MTE"); + const char *name = "MTE Stack"; + struct dl_exception exception; + _dl_exception_create (&exception, name, errstring); + _dl_signal_exception (errval, &exception, NULL); + } + } +} diff --git a/sysdeps/aarch64/dl-prop.h b/sysdeps/aarch64/dl-prop.h index abca2be7fa..66b05c1b75 100644 --- a/sysdeps/aarch64/dl-prop.h +++ b/sysdeps/aarch64/dl-prop.h @@ -27,11 +27,15 @@ extern void _dl_bti_check (struct link_map *, const char *) extern void _dl_gcs_check (struct link_map *, const char *) attribute_hidden; +extern void _dl_mte_stack_check (struct link_map *, const char *) + attribute_hidden; + static inline void __attribute__ ((always_inline)) _rtld_main_check (struct link_map *m, const char *program) { _dl_bti_check (m, program); _dl_gcs_check (m, program); + _dl_mte_stack_check (m, program); } static inline void __attribute__ ((always_inline)) diff --git a/sysdeps/unix/sysv/linux/aarch64/Makefile b/sysdeps/unix/sysv/linux/aarch64/Makefile index 15a2b4471d..32bc043810 100644 --- a/sysdeps/unix/sysv/linux/aarch64/Makefile +++ b/sysdeps/unix/sysv/linux/aarch64/Makefile @@ -145,6 +145,11 @@ endif # ifeq ($(have-test-cc-gcs),yes) endif # ifeq ($(subdir),misc) +ifeq ($(subdir),elf) +sysdep-dl-routines += \ + dl-mte-stack +endif + ifeq ($(subdir),stdlib) gen-as-const-headers += ucontext_i.sym endif diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-mte-stack.c b/sysdeps/unix/sysv/linux/aarch64/dl-mte-stack.c new file mode 100644 index 0000000000..98fae85cfd --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/dl-mte-stack.c @@ -0,0 +1,42 @@ +/* Memory tagging handling for GNU dynamic linker. Stub version. + Copyright (C) 2003-2025 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include +#include + +#define MTE_ALLOWED_TAGS (0xfffe << PR_MTE_TAG_SHIFT) + +int +_dl_mte_mode (void) +{ + int err = 0; + if (GLRO(dl_aarch64_cpu_features).mte_state & AARCH64_CPU_FEATURE_MTE_STATE_MODE_SYNC) + err = __prctl (PR_SET_TAGGED_ADDR_CTRL, + (PR_TAGGED_ADDR_ENABLE | PR_MTE_TCF_SYNC | MTE_ALLOWED_TAGS), + 0, 0, 0); + else if (GLRO(dl_aarch64_cpu_features).mte_state & AARCH64_CPU_FEATURE_MTE_STATE_MODE_ASYNC) + err = __prctl (PR_SET_TAGGED_ADDR_CTRL, + (PR_TAGGED_ADDR_ENABLE | PR_MTE_TCF_ASYNC | MTE_ALLOWED_TAGS), + 0, 0, 0); + + return (err != 0 + && (GLRO(dl_aarch64_cpu_features).mte_state + & AARCH64_CPU_FEATURE_MTE_STATE_MODE_MASK) != 0); +}