From patchwork Fri Oct 1 17:07:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julian Brown X-Patchwork-Id: 45697 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 E0352385742E for ; Fri, 1 Oct 2021 17:08:58 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id 40E353857829 for ; Fri, 1 Oct 2021 17:08:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 40E353857829 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com IronPort-SDR: 4GUL6GX+wCBTDV95KQmP8u+7eOy002QCYeSZEimhABErlzPWoT0j8pc21ekx7hixrD765W5DF5 U4EP8HCdHmWQzoUtJSGFuFzBlkb9zg9ECYIREDggpHQo3KCqZImF15UAXot9HOgvmHflQ6r/l6 31sM73jms+vjED4rCDRWgjpX/UaknPOp/h6c14MWbSNWgPMRYeGitKchfdIFTy7kEkWcyjJcy+ Cqr6ZXmDmX28WJ4TvN3CYf0lWFUWKVojvXqM5HHCwMSYScqAVt05wvATcgQq2JH8Wyv24JsYyW I95vONc+dWCaD9RwSC8RQKsb X-IronPort-AV: E=Sophos;i="5.85,339,1624348800"; d="scan'208";a="66548477" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 01 Oct 2021 09:08:09 -0800 IronPort-SDR: p+n4wL0FlIzi5rgYSNsWorjUsx1PTtAB8iloCtvx0pLwcs4dU5kzzXv4iB4Zcflginx/q+UQ4n 40PwMy+RQhm7IbSWDH7Gp2D60CRBeyqrCR4f0QYledDBbDu2lnaMJ2zAKM8f+VXHCjHqQRiy1Y dzQS9G1RQWMTP9AzNe+dWywlCLG8IGSgcIjCK2WXWxlGyZVLGGAOj5xrnqTpwlSgI+ZHEMAbPJ N5itvnk58ja8b5ihcCx/64rgIOcuaCpgWH/e1qYqTo7dm/i/GoCn7Xm3sBpOZPsO0oUin2sBq7 BwY= From: Julian Brown To: Subject: [PATCH 01/11] libgomp: Release device lock on cbuf error path Date: Fri, 1 Oct 2021 10:07:48 -0700 Message-ID: X-Mailer: git-send-email 2.29.2 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-07.mgc.mentorg.com (139.181.222.7) To SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jakub Jelinek , Thomas Schwinge Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" This patch releases the device lock on a sanity-checking error path in transfer combining (cbuf) handling in libgomp:target.c. This shouldn't happen when handling well-formed mapping clauses, but erroneous clauses can currently cause a hang if the condition triggers. Tested with offloading to NVPTX. OK? 2021-09-29 Julian Brown libgomp/ * target.c (gomp_copy_host2dev): Release device lock on cbuf error path. --- libgomp/target.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libgomp/target.c b/libgomp/target.c index 65bb40100e5..84c6fdf2c47 100644 --- a/libgomp/target.c +++ b/libgomp/target.c @@ -385,7 +385,10 @@ gomp_copy_host2dev (struct gomp_device_descr *devicep, else if (cbuf->chunks[middle].start <= doff) { if (doff + sz > cbuf->chunks[middle].end) - gomp_fatal ("internal libgomp cbuf error"); + { + gomp_mutex_unlock (&devicep->lock); + gomp_fatal ("internal libgomp cbuf error"); + } memcpy ((char *) cbuf->buf + (doff - cbuf->chunks[0].start), h, sz); return;