From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70040.outbound.protection.outlook.com [40.107.7.40]) by sourceware.org (Postfix) with ESMTPS id 0448D393D013 for ; Tue, 13 Apr 2021 08:20:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0448D393D013 Received: from DB8PR06CA0040.eurprd06.prod.outlook.com (2603:10a6:10:120::14) by AM5PR0801MB2099.eurprd08.prod.outlook.com (2603:10a6:203:4d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.18; Tue, 13 Apr 2021 08:20:41 +0000 Received: from DB5EUR03FT043.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:120:cafe::b4) by DB8PR06CA0040.outlook.office365.com (2603:10a6:10:120::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.18 via Frontend Transport; Tue, 13 Apr 2021 08:20:41 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;sourceware.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT043.mail.protection.outlook.com (10.152.20.236) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17 via Frontend Transport; Tue, 13 Apr 2021 08:20:41 +0000 Received: ("Tessian outbound 700fd1fc53d5:v90"); Tue, 13 Apr 2021 08:20:41 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 58c19a6176de4691 X-CR-MTA-TID: 64aa7808 Received: from d0058d87fbef.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 2A75D98E-D7D4-4D5C-A6AD-CF67E0DBECED.1; Tue, 13 Apr 2021 08:20:35 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id d0058d87fbef.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 13 Apr 2021 08:20:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e3c45lGQTaka2EJ+Tlv+uJGcknz+rLopCN7xUYpC1/Oy9aQyjMVFA3VU5beQCJd400E68CL4pCAUJ9Fr0He628REpwRZD/jJsI6TdIx1rmR/kc99jTPdjSbIpteqrqS0LJwBG0059E+HhGrCvnLpXdhYmSrwwMzSP5/n0l/dUFdvximsXmj1ZDQsbnfhCpScrvVdVYR6c9exNLXkFBUNsQwk3uRqz+QXXyvHXk4oFqs+EP/+LoqlveLKX3DdmGsGzj+SHywE6Pip9SGw0Cqw6PPlAtMnR4BiVPgJ4LOfI1/vyGnY/hXcQkvoFdb5WhppHE/tnNjzldeHI0JI/hw2JQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1vbxFpX+Wlte94xTBQS85D9po3/Z7KtywUaqWDrUi4M=; b=Qn9NP7PGSRQqHsMzTXuSI3w5xmnzsZnJXJ+1SA3IPbdpRibBwfFPoQhj6wEROaeojun5ZaReP6QqihGzJE1+0Pq9FKITNkmqJ8lTFILr3pUfmLW+qYWMhmPZzFikj4b7EKgrhQZlAnZASQrCVGNctJGOrws6RGgYj4wK8/wwQijP360HE94izCAX05py//EIvxOwrZX60chISlZL4UWC2h/0/snwLGgTclBni/yn9TS0MgXsuN1Q2osKO+3F1rg30MyO6XPYAvuEHJ/htep3v9o5IM5g27VEn4d+PmEiRNT8yZ4bACSg66H8j6qjXSC6/JTouCmyRtxYjAYTWGdDcg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=arm.com; Received: from PA4PR08MB6320.eurprd08.prod.outlook.com (2603:10a6:102:e5::9) by PAXPR08MB6558.eurprd08.prod.outlook.com (2603:10a6:102:151::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Tue, 13 Apr 2021 08:20:34 +0000 Received: from PA4PR08MB6320.eurprd08.prod.outlook.com ([fe80::c99f:671d:bb2c:f20b]) by PA4PR08MB6320.eurprd08.prod.outlook.com ([fe80::c99f:671d:bb2c:f20b%7]) with mapi id 15.20.4020.022; Tue, 13 Apr 2021 08:20:33 +0000 From: Szabolcs Nagy To: libc-alpha@sourceware.org Subject: [PATCH v2 09/14] x86_64: Avoid lazy relocation of tlsdesc [BZ #27137] Date: Tue, 13 Apr 2021 09:20:27 +0100 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: Content-Type: text/plain X-Originating-IP: [217.140.106.55] X-ClientProxiedBy: LO2P265CA0274.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a1::22) To PA4PR08MB6320.eurprd08.prod.outlook.com (2603:10a6:102:e5::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (217.140.106.55) by LO2P265CA0274.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a1::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.21 via Frontend Transport; Tue, 13 Apr 2021 08:20:33 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7ee49487-c961-4613-2aae-08d8fe550705 X-MS-TrafficTypeDiagnostic: PAXPR08MB6558:|AM5PR0801MB2099: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:2043;OLM:2043; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: atUAvKd47UeKfrnr5RHdG/a6uCBEzdKoqJaR7XHcvRG/c132cQMz07X+E6Jq5NFlKvryDCGMnhYyLMBE2u8Q8zoxtR52TmMRxzqXpk4qA+9JWN2KmgpKG8uj+FjdKsLNZF16eJT7YvXNzuHks7sEqhoeCTJx9lYjbo70PR/70ttV1Ywt6048RATnGz0y0tTOEd0ZgHxbE/8/6feDEsd9cPlVq6Y0JgqgiNSfH9Ax50LZW+RZj4cydviuzL56HPIqlyv1fYEFX1OECPLZdUU70q7kbxd+wZD2ktmEaWuapjfkSX2Z55/8L7prWd+iGSJ/+RU9k6WQFjzPDBsDpsqrkMKKBjDGDW+Il4m8DmaW0vO1YyDBGiP8yCYkuPXZVag3LvUBJG3d5RcS9vGCBTMW8+eX5E1n+AYg8bc+Z9dBlcfshtpFU0BFrMAvJ/kdJ0QxoS8JiQQ50kGC07AAASDjOKqelEdniWW11hLUjqY9Q+zbASdJ2ZDDq0Y5V/0WbkzISRIrkNv6Cdb+e1vk00syOrd4Q5FT8TLVWmIcr0VzivZovKxywTw+ehWRDiCswpLrX6BTW+lDyLrGMHpv8IrEx+rB4ojXJftX9j9jGq2Wv4RtkJ9l4wcYzxf3v3GZ8iJ1R9q3+uRWwtXHgrQfv9M8OAVWJNfvwhzqAG/HsmxXAm8TjX660PMnkOMonBF2RT4X X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA4PR08MB6320.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(376002)(136003)(39860400002)(346002)(396003)(26005)(69590400012)(66556008)(44832011)(316002)(66476007)(6512007)(16526019)(38100700002)(8676002)(66946007)(38350700002)(52116002)(186003)(478600001)(2616005)(86362001)(2906002)(6666004)(5660300002)(6486002)(956004)(6506007)(6916009)(83380400001)(36756003)(8936002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?n7hWwLXVRyxMkSuh/q85NfH6hL08h+nouxbiodEPmacClcXx7dxw9A9jsOha?= =?us-ascii?Q?LbwQLurHNcZdW1PwTSVEjI30WnY5KUVfz1tK4709VQDbbhuGnOOwmmRPmKh8?= =?us-ascii?Q?aLq4FhyXz5uCmXjuii5Tsx+e2fd+A/cRahtEFSpXijo2oSdruOef17P/rBGU?= =?us-ascii?Q?x9DqJMRzpGi4O55HHeKqN+49sMeYcIgGuOOOz8EGNrQebqGQciCcRzOtyaef?= =?us-ascii?Q?4RPkM0/E3sfnvg10l1YNNvLWnH7AdRYnfph2Op4XqQdkqGnX1XK70TvkgH85?= =?us-ascii?Q?IB2kYbwx+ORwXpGR8B6GCaDMBCbKNra8v2K+EeHZBi0i/SyQFw7Mr5U/B9hF?= =?us-ascii?Q?oEPA7xg+szX4A5vZcbfWhAwRpHjJfETe7AlLP41got3XUFS5cr4Y7EvDm1rj?= =?us-ascii?Q?5EwxzqcIxMlUn9SN9gvW7lTDox33JXe9JJE2uFSo0qm0rITmv5pi0iNUd1x1?= =?us-ascii?Q?JtoDcVioNOyIZvPR7RCQhtmxHV44jGHMml7fzh8FnlNHr+ZJfwZjVfzHP38u?= =?us-ascii?Q?uMe4LseDsaBInV3s1aDdG+atP8+zc7I8df0RXFFmcXYev4oYEKZTzWf0RWMH?= =?us-ascii?Q?svDAtvIChNRbKm+aXKQvg9fFD5nmx63HkWnTFpABD+sudlMBZUvs8ozJn6sf?= =?us-ascii?Q?dlPjebiM+ttcy95Q/V2Wjn08hfWT5PnLuZVMH4/EcDd/niGgk0JLnSFb/sDF?= =?us-ascii?Q?n50MJFasG7suLpJtqoRCzGsV0llJi/NBqGhzEI6tUdKzG4c2uxRJ9PdLCJLb?= =?us-ascii?Q?hgdrYWkge2P4hciIHXALYUSQ0+k0rpiWZsy70htuUpUYg1Zores0yb3qiAe/?= =?us-ascii?Q?U0kKytyeVbJ0LVtYDpVWtcWPb1JaBLS0WbxMc9Vxod8nug9RrygOUEMGfYrv?= =?us-ascii?Q?hI/Pe/9V6HLHTEUM/FMQ0aLMMmSNUJPKVW1eRWVbuLNINcQo2EcQU6eyl6oz?= =?us-ascii?Q?ltqirWRzMwXtEtWHeilzOvyOwB/TpuprTrZKbusrTMpYmdD3l3h9EPy3Kv8+?= =?us-ascii?Q?7ZbuUYLIewigeXoG8lz/IBh9CNdy4TuNKics2/MkaUqqOJdpm2ohxP/2YEtt?= =?us-ascii?Q?k/vttBShav2gkXviBpruLrr9ULsgi+dfwQxqrzcSe8/bIPh4aAGY9axBZVmk?= =?us-ascii?Q?xNGza+ocNAFzISvXf/o+8JEBVSWsHD5kcphfhlG52UToURJJsv1WN6Z3SLKx?= =?us-ascii?Q?aSkbvuOssLGD5vxCiRWM5pHWEuK4SZ0F4SuF9k5KCb48WZhG0SHspnyAF9RA?= =?us-ascii?Q?6v6Sv43tXC4ADknUwSEKBJ3Q/1egNY7qj3vImeYhv5CMr6Fp7yP+OMiH0ZDk?= =?us-ascii?Q?m20Jf/8q2oaSoRG9apJp00LZ?= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6558 Original-Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none; sourceware.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT043.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 4e313895-56db-4aef-c0f8-08d8fe55023d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +t6fSA63GOft6bsIhDW//d+ZCujgBEZ8zLssOs18+htfXPXmxZJS2a4B5oKn0krlwvKdOLenxIp2J2RwlkR9Bi37qlgLDE50H7Jl50vD1V67xgFAmSsn21S6IpCXGZLFVrlk3laSd4IntYH4NU+WhsOy07wV9qRhG3daKiuYfOsT9fOJJWUclTb4UVE0wNgzHbbY4G6/f664hqzCio3JpkJtI+cz4qLKZjHE4gmngaYSDgFEeH6z4beFOkypNUai3gZUHd6fhSoelURvIG5uxmgGXyxqOLJdWMal4xnKe3Ems6ZAl5YXNCzMdTBczH6uqxSuRvbzMqMT2qYoGjpMm8F+P9l4nhzHbl1w4DUNSqTUs3IOfJwiN2ZY6RkporT6AGPEaiELy0Z1k0Ow7zZviUB7h4KB3CDJYoKTZcLPc8lGFdIR9z9IJwjlfW2HP0xHJbjSSdL+Br5sPOT7znhhwXZcam7/Omr5h0k5jSBdNwcNx1VMdb04Fq5MvluFWVFkUfJoO26eoUJGgN+4ilNDHM9cNWcLK0TXKqdE/RNd4A8UfNhTRAhF0HXGpHrU/Qqgb9CAbKeORZIuYJF7mLKwkoKWo5lXqgkTFnYzpTEZhkWtTEEBNMjy4vTOJ+eFbmw0PlASBdCotK63/va0cLnMAUIZubzcHdGTPXEVMkwa6m1mDG7rEEl5EHIj4YPF9l9H X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(136003)(376002)(39860400002)(346002)(396003)(46966006)(36840700001)(36756003)(70206006)(83380400001)(6916009)(316002)(5660300002)(186003)(336012)(2616005)(956004)(82740400003)(6486002)(81166007)(8676002)(16526019)(8936002)(6506007)(26005)(356005)(36860700001)(6666004)(70586007)(82310400003)(2906002)(478600001)(69590400012)(86362001)(6512007)(44832011)(47076005); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 08:20:41.6299 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7ee49487-c961-4613-2aae-08d8fe550705 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT043.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2099 X-Spam-Status: No, score=-13.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Apr 2021 08:20:45 -0000 Lazy tlsdesc relocation is racy because the static tls optimization and tlsdesc management operations are done without holding the dlopen lock. This similar to the commit b7cf203b5c17dd6d9878537d41e0c7cc3d270a67 for aarch64, but it fixes a different race: bug 27137. Another issue is that ld auditing ignores DT_BIND_NOW and thus tries to relocate tlsdesc lazily, but that does not work in a BIND_NOW module due to missing DT_TLSDESC_PLT. Unconditionally relocating tlsdesc at load time fixes this bug 27721 too. -- v2: - mention the ldaudit issue with bindnow and tlsdesc. --- sysdeps/x86_64/dl-machine.h | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h index 103eee6c3f..9a876a371e 100644 --- a/sysdeps/x86_64/dl-machine.h +++ b/sysdeps/x86_64/dl-machine.h @@ -570,12 +570,21 @@ elf_machine_lazy_rel (struct link_map *map, } else if (__glibc_likely (r_type == R_X86_64_TLSDESC)) { - struct tlsdesc volatile * __attribute__((__unused__)) td = - (struct tlsdesc volatile *)reloc_addr; + const Elf_Symndx symndx = ELFW (R_SYM) (reloc->r_info); + const ElfW (Sym) *symtab = (const void *)D_PTR (map, l_info[DT_SYMTAB]); + const ElfW (Sym) *sym = &symtab[symndx]; + const struct r_found_version *version = NULL; - td->arg = (void*)reloc; - td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)]) - + map->l_addr); + if (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL) + { + const ElfW (Half) *vernum = + (const void *)D_PTR (map, l_info[VERSYMIDX (DT_VERSYM)]); + version = &map->l_versions[vernum[symndx] & 0x7fff]; + } + + /* Always initialize TLS descriptors completely at load time, in + case static TLS is allocated for it that requires locking. */ + elf_machine_rela (map, reloc, sym, version, reloc_addr, skip_ifunc); } else if (__glibc_unlikely (r_type == R_X86_64_IRELATIVE)) { -- 2.17.1