From patchwork Wed Dec 6 17:20:08 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: 81541 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 64C57383D790 for ; Wed, 6 Dec 2023 17:21:41 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by sourceware.org (Postfix) with ESMTPS id 7132D3857350 for ; Wed, 6 Dec 2023 17:20:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7132D3857350 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 7132D3857350 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::630 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701883227; cv=none; b=nyqGHm//QMWDkbBNC+6kWgRMIBxMmfnh1VRAE4tLU5rR73aA+t5+7HIB75/DB31viiuJApvd/R+g5iR4hPYS5MztxiVs5HsaKgrmH8+4SQmQjLxF+coivmCj6vNlmYiJmnC6Bg4NefD7XEmaEUnIrttttZKp4dJvaY9ulpbpUsM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701883227; c=relaxed/simple; bh=qCK11upKFGBB+La4ZXbMDWEYxvdwZcxl70V5K9orFRo=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=gfZl/WUf9T5mBxuKEi5hnc5uiGdsWBIayMxvpdW/QnypAhNgaXJ0L4QkMoA+Agzmr41Y84BQeBTF7/cweyz+b2zKz8jd9Ec5g5r0UFHGkKsrlj0gsZ+PjUrc9UM5GQukMBwvJxmYVlhHWEa1jL635dzdOdUPGfMbYj5xdpOGOVs= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-1d075392ff6so342615ad.1 for ; Wed, 06 Dec 2023 09:20:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701883220; x=1702488020; 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=8q1Ohnwjrg4tUBj3EdAv/9tjD2WX8CpF4KYlpGc8ifs=; b=b0TgyZN21c8K/5w+z2Wr3+7O5rYprE03Z1QJBflltU/ET+FM0zODw71ZWT+cKCIqmf zIpVp2eibyDBklz6NbMY8HUTJ+pGFkbxMPCmbczpCBYShO7SJAtRAwLIgePykYTkRGL7 Epcn4nppRss1ZrzfiHkHp6P+1Vnz+dYgKFbv4byro3TD0d2D/heOtofCxvjmIm+fS1tq oudI/xNl4gTeT/bTgVADIoFF3CWMLSKAf6EB/6qxNK7bv/OrFOTslmmosG3X101+Dqwd mR+S2J/0SmBGpoEZfZFUJWXhfaqAkIGZgGIl0ye6/1hMBdtJGeUP5vyHg10k8Xhd+KYT +fDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701883220; x=1702488020; 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=8q1Ohnwjrg4tUBj3EdAv/9tjD2WX8CpF4KYlpGc8ifs=; b=KSRcy/c39re3h0arHVbK5sCW1FBVxuvh3wdiYS5Iw83IcxqAG2hMt8fibhIv+0sJHn haOwOqdpBw6YCC+OaG974mKeYbupux3gh7o+nL6DwwxZjJddhaaEvGI4fMclU4gp8rMP g/WOmpkiZnCmsdscH3EVm8ZDlqJcycBdaLsT8g33tSHRwMzXH+SEQ4b0tQAZVCgoZ1Vq EQDj4mQHzOsNB3xHtyIVB6qhblAh0c2unRaXV0gobjv8kFyYieU8AemcYajd0e92gFIZ RGa9D3/ExkIvh9nM1LwuoemzUmS/NFkGRtJY0HxMs4yxzdPN0Rl4Zt1XzpGViv9v9oQg 0Zqg== X-Gm-Message-State: AOJu0YwcsQCsfDNh0FqbDkPJSnDtxLGyKHWOT8md/5AqiA4Av166y485 tugr0GT20G6sXQbro3Uk+RP37WGtF/s= X-Google-Smtp-Source: AGHT+IFpih9Z9vT8sUuio8AoHsHY7LgwDONLxWX6M3YGCun8GaPaSikkBP793EQKjYr8xMVWxOyfyg== X-Received: by 2002:a17:902:cece:b0:1d0:8e08:6a with SMTP id d14-20020a170902cece00b001d08e08006amr1909281plg.6.1701883220395; Wed, 06 Dec 2023 09:20:20 -0800 (PST) Received: from gnu-cfl-3.localdomain ([172.59.161.253]) by smtp.gmail.com with ESMTPSA id p2-20020a170902eac200b001d0c41b1d03sm84652pld.32.2023.12.06.09.20.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 09:20:19 -0800 (PST) Received: from gnu-cfl-3.. (localhost [IPv6:::1]) by gnu-cfl-3.localdomain (Postfix) with ESMTP id 10E9D740638; Wed, 6 Dec 2023 09:20:11 -0800 (PST) From: "H.J. Lu" To: libc-alpha@sourceware.org Cc: rick.p.edgecombe@intel.com Subject: [PATCH 15/17] x86/cet: Don't disable CET if not single threaded Date: Wed, 6 Dec 2023 09:20:08 -0800 Message-ID: <20231206172010.1023415-16-hjl.tools@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231206172010.1023415-1-hjl.tools@gmail.com> References: <20231206172010.1023415-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3025.0 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 7f37244d37..c6c407d7f7 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");