From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from YT5PR01CU002.outbound.protection.outlook.com (mail-canadacentralazon11021106.outbound.protection.outlook.com [40.107.192.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA7922135C8 for ; Fri, 10 Jan 2025 17:14:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.192.106 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736529243; cv=fail; b=f8OVsB0QnNJOGqHaphQ/idybFAClNGKt3ggkJW+C5vD5nrhmXVwrNGeLEtH0nga2Bncvgt8O0DG3HJjh7oADHOBAh8Wu9b+BB5Xwc9wkF6vtaPCf/zPwyfe/pd0I2gJwQAXSM7yhphcseFZD9xZTU5HHuBBe0ZmDRVXg3KvPQAw= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736529243; c=relaxed/simple; bh=GsxBKXOydceJqlbCRdUEz4WZow62J93yhKwI+AfIEIA=; h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To: Content-Type:MIME-Version; b=q/lhOcExQcAfo5WE2D9OhhVajYuBQXfkLb062/kYOkvVMB+o/xYuTklQtgrGAaKalkcXz39k55f2opIpl6oDsWfY4jS7tHwIGA9zFYKA/YHX8K38NqOzVYedgAnYYs9ixHiP+lLYDf4gyfoD7fJteL5ZdXfc+jy+FpaGfIROUGQ= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=efficios.com; spf=pass smtp.mailfrom=efficios.com; dkim=pass (2048-bit key) header.d=efficios.com header.i=@efficios.com header.b=sjE2xCYw; arc=fail smtp.client-ip=40.107.192.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=efficios.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=efficios.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=efficios.com header.i=@efficios.com header.b="sjE2xCYw" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ir2leN0xYeER9rvod0ZWBr+uRFnqQH/0S2SJIWSrfpN4vveZr1bBpiRpu9LBvmFbWTp4q9Ua1vX6vDv8VW28qogrOlRhH3W3k3Ajxqlh9cHEEmh74YUoo6XvpYU/wAJQw6LNoI+E8LCsSyGR/V+7TOB+EWs8keWLPU3ob7Vk4a5zwk00HtFWPYawEM98DaWfBNKSeJqjRNyh+CRKDBh1ZydCj2l1uY2JNP6s0CyO6bq6IhA3OlncnRbCUVN+P8wKuaOKXqVd6LWXYVCzzU3xw+hRgYrvzbNXwgsmeRZ50n7zZ6Q0QcRwM6bicxVP9hg5j9FcA0BkP/yjm/YTGmTtxA== 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=J4IN2RJCHFGNoB+E2z1DULzyOSJIw3Z30zh1yRllfMg=; b=KFaJFqoCOoo+KhM5sOeW1aQCPF2J8asLpk7OUomVopjcwWzaFq3HxyiN8HTqgsxtfag97PeifRNSCsTGSsVQHtrEaqw6yj4PxoHq76YFeOoyNIFlUFs+IXtSzsIFQytrFEgvc1hSsFazsSj5FXPCDET+fncSE+6ecebtUMxVVse49j0mf29dV+Do/NWZ8yHhhL/l/CmDomNb+XHOL6o8+jIj5nFApKdmscgZfO/hqhBhVWsnR/SEBFP7OyLftteF6IJWCnqghEvArUelajTMkcVRm19xFwW3s3Qcd35YwOlibmmqfqUhuEC1TfErPqesX9ts4sgZsFGUul/rLBjaQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=efficios.com; dmarc=pass action=none header.from=efficios.com; dkim=pass header.d=efficios.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficios.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J4IN2RJCHFGNoB+E2z1DULzyOSJIw3Z30zh1yRllfMg=; b=sjE2xCYwXQuKNIlZ8VnTwRuDigig/opgAM/zcuk7ZuRSrB99ffTne4yEdWFMR4DKGyrFFwxs5wBfTFuZ1iAUYWPiys5NBRBiYaAyFaC0eT0eNNUmpNKzn+D0IZV3ZfCGWp8qX3d2eSSab4naGaZaB2y1vdIhT5/PkO1PoIsPsaSfbSIvByVIs22E0rT/Z09k/9frolG2kgfYlApdDiGW4FAjh6Zjjq+qWllBtgZ78kI5z8m18RNP2JBaOf/inxftlxs2h2DM1jjFnfx1mu6L5h/AaXGeymJcODQzeyS1meb7B3v23VvfjFbmVhTP6HClhVix+FccElnx9UEtATYBjg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=efficios.com; Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) by YT3PR01MB10463.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:77::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8335.15; Fri, 10 Jan 2025 17:13:59 +0000 Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::50f1:2e3f:a5dd:5b4]) by YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::50f1:2e3f:a5dd:5b4%4]) with mapi id 15.20.8335.012; Fri, 10 Jan 2025 17:13:59 +0000 Message-ID: Date: Fri, 10 Jan 2025 12:13:58 -0500 User-Agent: Mozilla Thunderbird Subject: Re: Prevent inconsistent CPU state after sequence of dlclose/dlopen To: Florian Weimer Cc: libc-alpha , "carlos@redhat.com" , Mark Rutland , Peter Zijlstra , linux-kernel , x86@kernel.org, paulmck , Michael Jeanson References: <87plkutxba.fsf@oldenburg.str.redhat.com> From: Mathieu Desnoyers Content-Language: en-US In-Reply-To: <87plkutxba.fsf@oldenburg.str.redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: YQBPR01CA0010.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01::18) To YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: YT2PR01MB9175:EE_|YT3PR01MB10463:EE_ X-MS-Office365-Filtering-Correlation-Id: c070a7b7-91d9-4124-7945-08dd319a2c60 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SVByYXV0SjNqMjFEVkQ3OWZJRGdHYzdOcWFuWk81T1gyc2IvSzBuR0E4Q1p0?= =?utf-8?B?eHBZRWlzNkZOWXNqR2RoWVIrM0VoK0JWMlUwRUp0NEJMeFVQUThpYjZjRkRZ?= =?utf-8?B?TWVmVVJkbytvUnlMbitpK2Zac1NBbTM5VXRiMElxOWFpTCtxdlZNOUpYSXFN?= =?utf-8?B?WFo2QkhXZ25ML0xqZnpHcWFRUkZ2a2krLzVRRmxUWTFzbVFKRVR6OE93MXhi?= =?utf-8?B?bHE2THBmN1ZBY1RlUGZRRVFqZW0vT3ZVdHhNNE5qWkV1VDF4VlN0UTRUVDN3?= =?utf-8?B?OGwxamFhNmRPTGZROUdQNEYxSEJjUG1KaWoxZi9FY01BWUJsSXFkUmkyZHdE?= =?utf-8?B?VjFPa1Uvd3I2UXB5OTdpUTV2b0Q2MkZad3hLOHV6WFJ0RzJjT3dPYzBJMnVy?= =?utf-8?B?N0d0S0djOHdxR25ZTnRJTG1jNEc1NVpteHp5ZHBPRHVJMGh6dzFzL0dHckpG?= =?utf-8?B?MkZ6M3JTNGpvcHVRUjAreW14Vnh1aXYwNjJkd1VWdytPZExjd0JudGgwWEJi?= =?utf-8?B?N0Y5aUZVc0VZYWhueThuNUlCeXFoR0VSd1VXYzRYYzFqV3k5L3lTOWdRaFN4?= =?utf-8?B?TzBwOXZSQzFVbDBkeENGdVliWjNIZHlXYmMwTXNlcnh3ZVo2L1BKaXlabUpu?= =?utf-8?B?cnNjY2s5R2Q4MUZ6WmxhSHBVMUJwaVBmQ21zRUZoNk1pTDh1b1FOc0ZRK0tT?= =?utf-8?B?NGRxakwrcmJpT3U3MlRVNzRURjZaNEx4TXZCalM5aThJTnRLdFY0TkZ6bDZx?= =?utf-8?B?aTJ2N1RoV3V0RW9RVGNKUGxCdERhTUlFQ2RSS0lLRUl4Ry9iaXdyUGRqOGo1?= =?utf-8?B?bGJIdVB1QkU3UGc0M2d2Sy82a2tEZlp6ck1Db2owVHh0bHR0dXAzNGxPblF6?= =?utf-8?B?eXVoQnh5NmVFTlZxajlvUEErSEU0ajdjaHMvaXQrOHFoNnVseGdQNC9xekhT?= =?utf-8?B?c2tPT1FRMmpzeFFQKzZEYmNnY2FpdlNvWWY1aVNLQ0kwRVREQVVWTFQvTGpT?= =?utf-8?B?YkduRG1zY2J2b1NzR1BVblYvS25XWXZSOVRETHhmMWN3cE1KYUJNNmFYZlVE?= =?utf-8?B?RU1vWmlLZEk4ZWpxdW0rTFJNTDNJUXJXYlY5SWFnSllMa0FaRTJFYy82eDVP?= =?utf-8?B?WXlSaDdhVFBwNG9lSDIyeDdmUmlOaVhiVWlNTk1YQm5LdnVJNHg2Y3ZGNkcz?= =?utf-8?B?MjI0cXJTTDh2NXVia3BYdWhTS1lDYzdkSExiNXVuaGo4aE5XemIxVmZYcHZI?= =?utf-8?B?LzM4SG8zOHJTUzIzNFQ2S25GZVkzb3pSc2pRL01LMHZiRGVvUGRGVWRLM1Mr?= =?utf-8?B?b2E0aG04UGlVcEFleHVFUWhjc0NGN3FsMmFuMFRSeFRkdzl4cG81OFVpbHpP?= =?utf-8?B?ZEFQbDc0WHpVT1JwT2MvWTU4Y3lVanAxWU50Y2Y1N1Z2UHdHSmZCVDNGSEVk?= =?utf-8?B?QmFwQ0lHeG4vMUtwVHhnSGdWSEZpdlBZclBsajRTYlFQN2VicXllNE1jNmdI?= =?utf-8?B?N1hqd0NqeC9QdUlsRnhGdDhEUTFqdEpRTGM1amVWai9ZbW5VZDRhS214OTY2?= =?utf-8?B?dkoySTYxTVFndVUvSGk3eGJJY1pVZDRmR2x0dFEzYnBXdXlYUEdScHdWd3hG?= =?utf-8?B?alBPZks5cWMzQmpSSlZpeFF3Z05WSkpQVFhlcG50YThGaWNTODBxQ0VoYndz?= =?utf-8?B?azJkZUFIUnBmZk9wdmQ5RzkzcXNGT2N0U3Jwa015ais0MDhDdU9pRzVPTitH?= =?utf-8?B?TmdHVGVaSVpMMDA5dTRrUll2K25vbHdIekJXWUZwZVIwQlg2ajZZY0pnakU0?= =?utf-8?B?VGxLbU5iMlVyV2V4YnpkQT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TjVIOHFROU5yNUlTTDk0M1BWdEtTT1dYQ2RvU3hjTVU4WUhOUmtVeWxFWm9U?= =?utf-8?B?WnA3bUdyZjlxQ095cUkxVGtrM1ExVDFTSWdRVWVHK0lYTDNGZGhOc211TXBj?= =?utf-8?B?NHptTGRmb2RpbUw2bDhEM3pLU0pPcXFHNExTZWxDdUJqMVY1U3kyRVdkd3A2?= =?utf-8?B?WHN6SFA4YmQ3bnFpeVlNQnlRdGJWTHFJWElDRjJmZ3lIbnkwd1I5clRTN2ow?= =?utf-8?B?aHV3dEFXMUlINHZLVUFTKytibHN3Q2p6WUJDYnNnd0kwL3R4c3lxaGtrV2tl?= =?utf-8?B?VVBJSUllbEM4c3dBYWJkSUVLdEI1cDBYamdvS25xdkg1OHJVSnJPelB6d3M0?= =?utf-8?B?QWNxY3F2M1d0SmNtMFJYamhPdDVhMTJNOUFOWDlwdENNYm5GeDlEbFhkOGJq?= =?utf-8?B?NlRFUm1CbzBkeVJYakR1RHdOZkJXeTd2bnpVbm5nTmFSdkxLeFNURzYrT2gz?= =?utf-8?B?TVF2d1VkWmFTU2svY2NHUFp0ZGVmakRRMkYrMmFuZUhKZkdPbmVKWWtmRC9G?= =?utf-8?B?eWZYOVRsU0lpTTBFYWdEL1liaHYzUHViYW5BRmZVeGx1ODljQm9uc3hFK045?= =?utf-8?B?ZEJHMnVyMTAxeitMRG44TitZanhrSHZkb0JWU2JxZjlqVmYzUVJZQ3B0Wlg4?= =?utf-8?B?WWdWditRUndlaEg3RHZ5cmtQb014SFhDYXdsVU8vcHhoeFRBNWVneWFsWlY2?= =?utf-8?B?R1Y0SmRlNjNid3hxb3N5RmVjWUFPbGFGYVEvcVl6ZW1nbFZ6NklOR0dGU1E2?= =?utf-8?B?WGZHMGoreE1remRUb3pOeWYrb2wvUEs0U2l3WGg4OFQ5d3ptTm1LMjZ0NjRj?= =?utf-8?B?TG5rRzZyZjFSOXYwMnFPVGdjNnhEM3hoK2dLWVRFdWdNeU9uYkRGZ3h6cmZi?= =?utf-8?B?SnRGOEdxTDhVcFpDdnY1VU5aWWEwOFZvOEFLd2NqREU5a0RpZG1Kc1BnSGRD?= =?utf-8?B?cjBDSjM4a3dvdlB0MmI2YVNzQXpUMm15b3p0V1RRUEJSdFlGWStIQm9LL2Zw?= =?utf-8?B?V3orZnVydmROdFRkTVZkSDBUd1R4ZkhCQVVZRDZGLzBmNjBxd1Vic2NCZkkz?= =?utf-8?B?TlN2MTU5WElrbldnTy94OUtZY2hlSUVRY3BLT0QwYjRhc0V2WEpVOWxQeW5W?= =?utf-8?B?TGxjKzg3cmRwaVhoSlYxNkJmaCtscHhEVVJHY29aaTVOSUQxVzdadDMvUHpQ?= =?utf-8?B?MmhkWUpaQnlhakJOL3Y5cFFvcjRKSlRwZy8yWk5KanloQUh4VmJSbDVCZllh?= =?utf-8?B?S2ZtVmtjREZORHl4OU54bE50akx4bUN5cEVaZmRGcmFoQVp5MXpzZ2pPbGtn?= =?utf-8?B?dzVzTnFRanRTSjBkTmJiVW4yNUdiZE9oVnRZb3RkcEdSTWdIdThVZjl4RjBY?= =?utf-8?B?b3k5Y1dMT2lhb0tvQVA1WFZTZmNhcnAxblJNZmhSdUlrTkdlaGEyTTNXclNH?= =?utf-8?B?cG9QRUthRlc0ZUV5Qi9hdy9IKzkyVUZUYzE0OEtsajFhSW1ycitibmJtR29s?= =?utf-8?B?NFhrLzVUQW9HY01EOVh6MzM2c2ZOMkhSYUpaR1JDUjhUNlZNbnZBY1luWVlD?= =?utf-8?B?YWp4SDVrOFBKQ2lld1dHempuTnJtRGEyQ1pkejN4dGtEaHpkNlRFWkVBbFB0?= =?utf-8?B?dnA2SHdZVkdqbDFianU3MVpQbUNPcll5Ny92V2lXMC9kbVZ3elNaaFlFanQ1?= =?utf-8?B?TkNDWWFtcDVCMS9HL2hDQ1pVMlZUNDhNOW5FRXdKMmhKcDhjblhXOGFRVmd2?= =?utf-8?B?L1BZQUI0SVNoTXRhWUJvZFY0MTJLZmM1TkswSDkydDF3R2VTblJNbWowTFZ4?= =?utf-8?B?cHp3NElYekloek4vVUg3TE9rNEpBRERUSm5NaU5ibCswbzhoaER6MXJYQTk1?= =?utf-8?B?VmJrSUZIT2RrbDZpWC95SnU5R3JkaHBEeFlQb2RoVFpiOFNMNmNHS2s0TkNO?= =?utf-8?B?YUJuNUtJdHhpeWVTVjBPNElsSjBtL0RaQjNhVmNGcW5IKzR0YTlBMVpBdEdW?= =?utf-8?B?VTRrMm53cFRLK2hNUEtmbGtWMUlQZWc3NUJqdlVZU0MvS1JGREFHMnlxSjEz?= =?utf-8?B?NEhzRkdiRXJwcTFTYUFKSnBDMTZsbnY5Q1FNS0l6bDJqSjJZRXZVKzRNTTgy?= =?utf-8?B?c3UydGhYMHRJYXJrK0dpVUw5R1pJZzg5cVVRSnN5akpweFFOUmpXUHZPRVFJ?= =?utf-8?Q?hdePQMYMQj2YMCChUEMqslM=3D?= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: c070a7b7-91d9-4124-7945-08dd319a2c60 X-MS-Exchange-CrossTenant-AuthSource: YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2025 17:13:59.6761 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4f278736-4ab6-415c-957e-1f55336bd31e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: F1IiNW7QsalZrsV0N09PMJVpVXVby6adtioH/hqxELb1kPs9gQOTTU6f803xlktM47DGX5pPWuZmBFc+OvLuUcZ4PQlEanlYkxld4mi9ffA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT3PR01MB10463 On 2025-01-10 12:04, Florian Weimer wrote: > * Mathieu Desnoyers: > >> I was discussing with Mark Rutland recently, and he pointed out that a >> sequence of dlclose/dlopen mapping new code at the same addresses in >> multithreaded environments is an issue on ARM, and possibly on Intel/AMD >> with the newer TLB broadcast maintenance. >> >> I maintain the membarrier(2) system call, which provides a >> MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE command for this >> purpose. It's been there since Linux 4.16. It can be configured >> out (CONFIG_MEMBARRIER=n), but it's enabled by default. >> >> Calling this after dlclose() in glibc would prevent this issue. >> >> Is it handled in some other way, or should we open a bugzilla >> entry to track this ? > > There is nothing special about dlopen/dlclose, we just use mmap/munmap. > If there is a synchronization problem, we'd have to add to add barriers > to mmap and munmap. > > But why isn't it up to the kernel to handle this correctly? As I mentioned to Peter, we could add this barrier within mprotect(2) and munmap(2) in the following cases: - mprotect removes PROT_EXEC from a mapping, - munmap unmaps a PROT_EXEC mapping. We could even go further and batch this: we only need to issue membarrier-sync-core on the following sequence for an mm: On either of those, set current->mm->pending_membarrier_sync_core = true: - mprotect removes PROT_EXEC from a mapping, or - munmap unmaps a PROT_EXEC mapping, And then, if current->mm->pending_membarrier_sync_core == true when: - mmap is called to create a PROT_EXEC mapping, or - mprotect sets PROT_EXEC on a mapping. invoke membarrier sync-core and set current->mm_pending_membarrier = false Thoughts ? Thanks, Mathieu > > Thanks, > Florian > -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com