From patchwork Tue Apr 13 08:20:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 42970 X-Patchwork-Delegate: azanella@linux.vnet.ibm.com 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 BF4D4398207C; Tue, 13 Apr 2021 08:20:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BF4D4398207C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1618302046; bh=1vbxFpX+Wlte94xTBQS85D9po3/Z7KtywUaqWDrUi4M=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=xA69FDoejh3VOJ/VckEKA2LTE6uAtDzjFJMtHn/TU1b7zuqwbc1RaQAMdQ9oRDfJf /8plnAyFtPCoMY1dCNggh1+PXUEfhBlLQY9QcmSRnuAFH5izhjC3LbJ65vFU3zvMQu iDSSPR5HfviA6E4/2he00z6yN77sQ11b9s5EzuCY= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org 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 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: 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: n7hWwLXVRyxMkSuh/q85NfH6hL08h+nouxbiodEPmacClcXx7dxw9A9jsOhaLbwQLurHNcZdW1PwTSVEjI30WnY5KUVfz1tK4709VQDbbhuGnOOwmmRPmKh8aLq4FhyXz5uCmXjuii5Tsx+e2fd+A/cRahtEFSpXijo2oSdruOef17P/rBGUx9DqJMRzpGi4O55HHeKqN+49sMeYcIgGuOOOz8EGNrQebqGQciCcRzOtyaef4RPkM0/E3sfnvg10l1YNNvLWnH7AdRYnfph2Op4XqQdkqGnX1XK70TvkgH85IB2kYbwx+ORwXpGR8B6GCaDMBCbKNra8v2K+EeHZBi0i/SyQFw7Mr5U/B9hFoEPA7xg+szX4A5vZcbfWhAwRpHjJfETe7AlLP41got3XUFS5cr4Y7EvDm1rj5EwxzqcIxMlUn9SN9gvW7lTDox33JXe9JJE2uFSo0qm0rITmv5pi0iNUd1x1JtoDcVioNOyIZvPR7RCQhtmxHV44jGHMml7fzh8FnlNHr+ZJfwZjVfzHP38uuMe4LseDsaBInV3s1aDdG+atP8+zc7I8df0RXFFmcXYev4oYEKZTzWf0RWMHsvDAtvIChNRbKm+aXKQvg9fFD5nmx63HkWnTFpABD+sudlMBZUvs8ozJn6sfdlPjebiM+ttcy95Q/V2Wjn08hfWT5PnLuZVMH4/EcDd/niGgk0JLnSFb/sDFn50MJFasG7suLpJtqoRCzGsV0llJi/NBqGhzEI6tUdKzG4c2uxRJ9PdLCJLbhgdrYWkge2P4hciIHXALYUSQ0+k0rpiWZsy70htuUpUYg1Zores0yb3qiAe/U0kKytyeVbJ0LVtYDpVWtcWPb1JaBLS0WbxMc9Vxod8nug9RrygOUEMGfYrvhI/Pe/9V6HLHTEUM/FMQ0aLMMmSNUJPKVW1eRWVbuLNINcQo2EcQU6eyl6ozltqirWRzMwXtEtWHeilzOvyOwB/TpuprTrZKbusrTMpYmdD3l3h9EPy3Kv8+7ZbuUYLIewigeXoG8lz/IBh9CNdy4TuNKics2/MkaUqqOJdpm2ohxP/2YEttk/vttBShav2gkXviBpruLrr9ULsgi+dfwQxqrzcSe8/bIPh4aAGY9axBZVmkxNGza+ocNAFzISvXf/o+8JEBVSWsHD5kcphfhlG52UToURJJsv1WN6Z3SLKxaSkbvuOssLGD5vxCiRWM5pHWEuK4SZ0F4SuF9k5KCb48WZhG0SHspnyAF9RA6v6Sv43tXC4ADknUwSEKBJ3Q/1egNY7qj3vImeYhv5CMr6Fp7yP+OMiH0ZDkm20Jf/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-Patchwork-Original-From: Szabolcs Nagy via Libc-alpha From: Szabolcs Nagy Reply-To: Szabolcs Nagy Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" 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)) {