From patchwork Sat Dec 16 16:53:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 82312 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 8B1883842FFD for ; Sat, 16 Dec 2023 17:00:25 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oo1-xc33.google.com (mail-oo1-xc33.google.com [IPv6:2607:f8b0:4864:20::c33]) by sourceware.org (Postfix) with ESMTPS id 799AA385C409 for ; Sat, 16 Dec 2023 17:00:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 799AA385C409 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 799AA385C409 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::c33 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702746009; cv=none; b=wWSM9HXi20ClpQP/vfwrf8JVZEmF26Upnkv0ZNwLsBV8/BSIxHXD+OwQM/DfoNrbFLYom2a7Zinm5Nb3qhm8leAXrpwQdoV3QNLZ+8ze2YPbBxG2ppnsyh7gsqjuNzbSc9wOMuAVAz+wZQLzpCGY/b646mep29sVjQMplL4x9C4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702746009; c=relaxed/simple; bh=ig8yVNS33DSIzZRILpAAcWGpEK8ng+DxJGNxxwkVbxA=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=aA0KMwpmH5AGv8XU5AgN0Yo+1/ddWhuY1q2XAWH1ViIPMvVpP7eOgoYYdGpEp6YxLRmxo7jr+Llwocen1425YXrlj8N0Fi71fQaiJNAqyZSeU3ULtlxRroaWMI5ndHcV86/n/p+zUeSVeHjNJ70p4PrP4t2YXiHAQnUsecQ+Gi8= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-oo1-xc33.google.com with SMTP id 006d021491bc7-58d956c8c38so1311415eaf.2 for ; Sat, 16 Dec 2023 09:00:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702746008; x=1703350808; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8TjL1hT0UjJW4esKgCnzilwhWmAYiLuD2V973GWJvac=; b=KN/qxjXfjLFxfxrsa+EiVpTjXXL8POF7otYqv66D+kxjUAahI8dH9DiQxoreDi9njU wBYplQ/LZSuk1tU00h6LBVf/bdo9BvTOy42sOCWsbvlV93FV1cD3Zdlw7dfpuisSj2+3 zFDlkni7m5MZpfHac0x30osn/dDNxtHsqhmc63aUo0a0w136tlhb75+K3NhigdnFo3Y6 Gvxi2Cv7nDLzgtZn1U1rbLC06+hdqRwCsbGbmhn/NWQJv+qssl3roDXZq5WDXGaRv8lo ktzvSM94tGWLlYaRVLnBLwtDPbJad7rYLZM1OLp92xZnlFHdfb+Ue2sZPqD7eQ13e0Vi y0OA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702746008; x=1703350808; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8TjL1hT0UjJW4esKgCnzilwhWmAYiLuD2V973GWJvac=; b=vhbxTJMI8q04REZ7La6bmq4jcxs5AJrZetAqO8TpSixprTHUvxZL7CNH+pHKm7SF2r V6b6BtNMKiiI0mRaYpgmYCH3pBRHYjIAABaZdFWGf+ue0j0wEIYBGQ2HC1YxIm6hQ+yO 66FzKKNpgkS2eJf2HHiWGI3fVSgHv9g+bhbUf3sVK4QaHpAQtLGjN42t7l1f+SDMcGj4 ZDVapm6qpLTRTYRIzRxVLWRe7zuRhxMHFPZ/1DW+5UPA6c4aQ9yoxJMjiC+COzw8Gle8 4A+tlvNwzB0+nAtoC1T/ImNV35Zl4p8koSVfjfIJxu/lespRE6l+2QxCdoM8gwxwuL4W ApGw== X-Gm-Message-State: AOJu0Yzj9RogPGXpPENXcifBF6mfiMNuXl4UMIlJhraIgBMX49X2j4T2 X19KKtP78KbXYEZNn3GYA0zi3xaoXzY= X-Google-Smtp-Source: AGHT+IHQKvJZmiHOcKXg3kCBn3n/4sxwYdx8FV5w6gsz4Ma1apq7o4rWA67b03Zr163nUGbmoFfU1w== X-Received: by 2002:a05:6358:921d:b0:172:b39d:2ae4 with SMTP id d29-20020a056358921d00b00172b39d2ae4mr2543719rwb.19.1702746007513; Sat, 16 Dec 2023 09:00:07 -0800 (PST) Received: from gnu-cfl-3.localdomain ([172.59.129.147]) by smtp.gmail.com with ESMTPSA id hk13-20020a17090b224d00b0028699a25207sm17977268pjb.12.2023.12.16.09.00.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 Dec 2023 09:00:06 -0800 (PST) Received: from gnu-cfl-3.. (localhost [IPv6:::1]) by gnu-cfl-3.localdomain (Postfix) with ESMTP id 07D0A74063E; Sat, 16 Dec 2023 08:53:26 -0800 (PST) From: "H.J. Lu" To: libc-alpha@sourceware.org Cc: rick.p.edgecombe@intel.com Subject: [PATCH v2 14/16] x86/cet: Don't disable CET if not single threaded Date: Sat, 16 Dec 2023 08:53:23 -0800 Message-ID: <20231216165325.2584919-15-hjl.tools@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231216165325.2584919-1-hjl.tools@gmail.com> References: <20231216165325.2584919-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3024.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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 In permissive mode, don't disable IBT nor SHSTK when dlopening a legacy shared library if not single threaded since IBT and SHSTK may be still enabled in other threads. Other threads with IBT or SHSTK enabled will crash when calling functions in the legacy shared library. Instead, an error will be issued. --- sysdeps/x86/dl-cet.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sysdeps/x86/dl-cet.c b/sysdeps/x86/dl-cet.c index f40f8e17b0..25add215f2 100644 --- a/sysdeps/x86/dl-cet.c +++ b/sysdeps/x86/dl-cet.c @@ -20,6 +20,7 @@ #include #include #include +#include /* GNU_PROPERTY_X86_FEATURE_1_IBT and GNU_PROPERTY_X86_FEATURE_1_SHSTK are defined in , which are only available for C sources. @@ -204,7 +205,10 @@ dl_cet_check_dlopen (struct link_map *m, struct dl_cet_info *info) && (info->feature_1_legacy & GNU_PROPERTY_X86_FEATURE_1_IBT) != 0) { - if (info->enable_ibt_type != cet_permissive) + /* Don't disable IBT if not single threaded since IBT may be still + enabled in other threads. */ + if (info->enable_ibt_type != cet_permissive + || !SINGLE_THREAD_P) { legacy_obj = info->feature_1_legacy_ibt; msg = N_("rebuild shared object with IBT support enabled"); @@ -220,7 +224,10 @@ dl_cet_check_dlopen (struct link_map *m, struct dl_cet_info *info) && (info->feature_1_legacy & GNU_PROPERTY_X86_FEATURE_1_SHSTK) != 0) { - if (info->enable_shstk_type != cet_permissive) + /* Don't disable SHSTK if not single threaded since SHSTK may be + still enabled in other threads. */ + if (info->enable_shstk_type != cet_permissive + || !SINGLE_THREAD_P) { legacy_obj = info->feature_1_legacy_shstk; msg = N_("rebuild shared object with SHSTK support enabled");