From patchwork Mon Feb 26 21:03:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 129709 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp4290781edc; Mon, 26 Feb 2018 13:05:13 -0800 (PST) X-Google-Smtp-Source: AH8x2263viTCXWjI1wY3CFP5qh2vNLaOSGVBcBhEaLcqAMc6sZAeKYPKc9aod6ZwTiuT6NLg+S+s X-Received: by 2002:a17:902:22f:: with SMTP id 44-v6mr11728881plc.418.1519679113761; Mon, 26 Feb 2018 13:05:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519679113; cv=none; d=google.com; s=arc-20160816; b=jeyfEhnRaw00McW33BjlbMa2WBEFMliC4ku3zbAjLvJWnMav+/JrQTSGoNMmYnTWgt IhccZ+YQWl1jtXIMbJIcmvR2mrHs0gF4hI7pdcVNBK6xRtgp+qioZoY7jKF3oQkUiaB8 vRhXwnoS9KinAoGkn47N1/G2C28xoobO2qmohMdodJYjMEaWH+Jz7eYXZUIMO9fAtsb4 ++m9pXvBHc3RFqju7TfoNvcWqU75J4oAv7PbeyZWNU0Mj7AuL+eVVkoJZQlzQ8DZ82xT exhRewhRYZIUHccl+OMOwl+BeBJImY/AlDHGgjeoMZyjiTsArHjLkj3yZ1hw0qWEjjNM a8kg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:to:from:delivered-to :sender:list-help:list-post:list-archive:list-subscribe :list-unsubscribe:list-id:precedence:mailing-list:dkim-signature :domainkey-signature:arc-authentication-results; bh=rIKASI/xqygYPeVZN0MZuyA4i3E0zGIlkJOiUFa81Ow=; b=0C0+1s342vbeQ2qbs5YA/gmKMrYvXW2rBFnfLyJdvAbyl9lphRTbn6w2R91gLT1tO9 SWUSZ2oV2dRK7gSxLABec8rz0Y3ECPL+xSrDY8KtmXMnveh+MuJOVL6RzWloytvtVMJ7 5jMRSnuxA40D2yQJoChW1fWCi9ShcxqNf7rHd8l5y4qAn1srC4RyM879D/QdRmYEsndG fYgnch8nageLWuO+ofXl0kc7OdaBtyi+uWkgs3YnbDklUVHyWgF9blfg7mXb2iqhcDDH g7Ed5UFZZBD/7hv5hLJKCsqUspHF54ILPZEVtJG+WbfOTOobtpkLkM2Uf9z+xznCtYSJ o3Hg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=CKcTVNpg; spf=pass (google.com: domain of libc-alpha-return-90624-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-90624-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id x4-v6si7300479pln.652.2018.02.26.13.05.13 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 26 Feb 2018 13:05:13 -0800 (PST) Received-SPF: pass (google.com: domain of libc-alpha-return-90624-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=CKcTVNpg; spf=pass (google.com: domain of libc-alpha-return-90624-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-90624-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id:in-reply-to :references; q=dns; s=default; b=ChU1q61/pnpa2KCRdqJjIJndeL3NBe3 0yleJmflUqUdZ3R0LyuSiRQDgrEb0x8YPx+geKIVT8qrKvz/vXPuxlyk5ueyVS9V mKRv8toGVx/USzhTrIEsfZ4iOrypgi5GDFOWIQs09Mo7Xv63w3fJeciTdL0p/0vx AkG0EseOVUq0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id:in-reply-to :references; s=default; bh=rSZ/EArDPWhdQrytvqpNDL96XB8=; b=CKcTV NpgnLif1yC733pfRVOQT082/ffH4ZvFJVvlOPJbM1UclOYvHMfeFgHYw5UFnm/ri c6jcQz+iOOL3/RcghWrPZ4FF82G2rJ6K2rj/jrsw6KE6w4g18893kicPqDMv+dta N21GHn7OBNOOC1fHZjbtlU/hxr9M3StXt0FBus= Received: (qmail 75828 invoked by alias); 26 Feb 2018 21:04:00 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 75698 invoked by uid 89); 26 Feb 2018 21:03:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.0 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-qt0-f193.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=rIKASI/xqygYPeVZN0MZuyA4i3E0zGIlkJOiUFa81Ow=; b=hDPEPeWiE+v06NYlGxKZg4I7YskWycJlEFNa0HWJo9gw2gYidC+k5BlkuI5PDd9aht x3L0prs1LsRJ9NISM2sDsw5G+Kk/dEmtSL2cWH/Dnvmqi6Uiiviw/0bOvh+a+Ni9TegG 27uuY4Ngpxuy7zbpUvgoRHNAEAxHDvlh28rwy9Wu17uJgBPPul+N9+UHTLKX5FFeXf5v z8KtODl2cqiMiCReVBVWXzpwG3IEArk1KiABNO6jUWxv4dcSWcNNdbc/7aXlKDCi24Ij zREiUilsrya2NQPfjkF5Tw23bFybkK1P2p2igVgjHQT5LKEivvxyHXej2DnjCtVFYNku rb9w== X-Gm-Message-State: APf1xPD9Ou0z0SVLtJnDfihJraqkxp2ADy/ZYgOqxrQ7Ghn3yBXrtw5Z NNofxb38czz/3MBxdt+5CsF63yQSQ2k= X-Received: by 10.200.24.46 with SMTP id q43mr20235726qtj.309.1519679036167; Mon, 26 Feb 2018 13:03:56 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH v2 08/21] nptl: aarch64: Fix Race conditions in pthread cancellation (BZ#12683) Date: Mon, 26 Feb 2018 18:03:23 -0300 Message-Id: <1519679016-12241-9-git-send-email-adhemerval.zanella@linaro.org> In-Reply-To: <1519679016-12241-1-git-send-email-adhemerval.zanella@linaro.org> References: <1519679016-12241-1-git-send-email-adhemerval.zanella@linaro.org> This patch adds the aarch64 modifications required for the BZ#12683. It basically adds the required ucontext_get_pc function. The built cancelable syscall wrapper for aarch64 using GCC 7.2.1 and default configuration flags shows an expected optimized version: --- __GI___syscall_cancel_arch: .LFB38: .cfi_startproc .global __syscall_cancel_arch_start .type __syscall_cancel_arch_start,@function __syscall_cancel_arch_start: ldr w9, [x0] tbnz x9, 2, .L7 mov x8, x1 mov x0, x2 mov x1, x3 mov x2, x4 mov x3, x5 mov x4, x6 mov x5, x7 svc 0 // syscall nr .global __syscall_cancel_arch_end .type __syscall_cancel_arch_end,@function __syscall_cancel_arch_end: ret --- A similar code is obtained with GCC 5.3.1, so I see to need to provide an arch-specific syscall_cancel.S for aarch64. Checked on aarch64-linux-gnu. [BZ #12683] * sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h (PSEUDO): Redefine to call __syscall_cancel function for cancellable syscalls. (__pthread_get_ip): Add implementation. * sysdeps/unix/sysv/linux/aarch64/sysdep.h (SYSCALL_CANCEL_ERROR): Add definition. (SYSCALL_CANCEL_ERRNO): Likewise. --- ChangeLog | 4 ++++ sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h | 11 +++++++++++ 2 files changed, 15 insertions(+) -- 2.7.4 diff --git a/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h b/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h index 04596ef..d9822dc 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h @@ -16,6 +16,9 @@ License along with the GNU C Library; if not, see . */ +#ifndef _SIGCONTEXTINFO_H +#define _SIGCONTEXTINFO_H + #include #include @@ -33,3 +36,11 @@ (act)->sa_flags |= SA_SIGINFO; \ (sigaction) (sig, act, oact); \ }) + +static inline uintptr_t +ucontext_get_pc (const ucontext_t *uc) +{ + return uc->uc_mcontext.pc; +} + +#endif