From patchwork Mon Feb 26 21:03:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 129721 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp4292905edc; Mon, 26 Feb 2018 13:07:22 -0800 (PST) X-Google-Smtp-Source: AH8x225wv5TKsFG5h0JkTVJqAPnSYIEgjb22dBaV988oCgeWjZGYCC+wvK6sAgIEPvLkQMtG6nPW X-Received: by 2002:a17:902:7182:: with SMTP id b2-v6mr11745077pll.331.1519679242215; Mon, 26 Feb 2018 13:07:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519679242; cv=none; d=google.com; s=arc-20160816; b=u13xb6KQgDR5sQON0Lcvn731q67FEyJMCYAz6bExtXWnEHvhw4uoBqWhcaTwqt3+Iw WEAHJ/sHnMrZ3pavaWTJh1zhhsO190T7l123raBRqwK6Zy4qZrIXiHgqaB4d1uKpfHfx T3AeTuQkI90SELBWeDgwetF7OqsChIPnkB9L01BQ4Ypv+8hAmFROvb+Y8WmOf2AbrXS/ knFEg+o70ml/D428zFCbYljjliCkFjkY8kh1R9zclJBKr5O12kGYltn+nU70+TwoxJM2 yVMOLn7ECVvhnRhxHt51C3VPFvj5L77Vl1dr+GC19h2ecqmRo4cIS8zE192MA3aY2P2i Kq7w== 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=pGdS7T+J55IdDF3aeWRNChY7iBlsxXKcS9ef8mp1vl0=; b=jgmV/jPW7eQsc/DLoNUYCgbUuceSh0aU6B4qTOuCgh98ICFN0CtUGFjvIYuB6qyVBN lksYb50FYNhNX7K/whlAL/AJIth7gJy9C1EFCWAV3Uw9R8ep/qrRV35vt/X5OcVA3BmP GIP8X1PBrc0aAVOE20p8VqHnmBlnyvh3XYjQeJBoApD/GWSsH+3pXAihX95os/QJK24H 9Lb/RBgP4SnIeIZnHWYEMAFVGQUtFFEDYX0y9nvBa/mzB/cgeNDKJzCvsGzHgwctimEs wYTDNHA4fIKLXI86txuTClVBIDVpxZcqdI8sshl6hBIGbGLMz1GrbGVCxpwTMBqoveT6 DDEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=Ads7qRg3; spf=pass (google.com: domain of libc-alpha-return-90636-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-90636-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 c26si6010813pgn.716.2018.02.26.13.07.21 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 26 Feb 2018 13:07:22 -0800 (PST) Received-SPF: pass (google.com: domain of libc-alpha-return-90636-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=Ads7qRg3; spf=pass (google.com: domain of libc-alpha-return-90636-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-90636-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=qJ1hjJePwdSBAWDPSRa5Dp6KM1WGJbs ZKsUWqshZuw/IdUI8M2bDSeuxIAHrR1SohgCD/P4ja4fgQxkd2O2gCauFdYqZlLK jF+b0mvEIRuMeV1aea8gic7HZnQ9fY1daJkh9egt3N7/PxOezDoYNj5BMxoV8K9V AZWnhAj9dgl0= 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=H0SMIxWra6sJcQ8yC2ouGN+E6iU=; b=Ads7q Rg3eEcF7VRwPS/X9OX7iRwbZ//AYeWQLoAWvEb+WCL8vhwn1dRtWGDsTv6rbw/Sk 2cckKZ5miBdrVU2uYcfZbc3wHyA68Q7hqaP46OkUJg7CiWWAaAMQExDlyVdKOUka oAjcIeRfuE47AdaMsmBUgg3segmOnHs37GxdjU= Received: (qmail 79821 invoked by alias); 26 Feb 2018 21:04:29 -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 78439 invoked by uid 89); 26 Feb 2018 21:04:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.1 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=ecall X-HELO: mail-qt0-f177.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=pGdS7T+J55IdDF3aeWRNChY7iBlsxXKcS9ef8mp1vl0=; b=lNkuGlNSy4Nkxtk4oIP25mUVx7lNpWCOePv48xTqpUbKYRR4SLjXoyH/+4/XVu9aG8 bnpciebjzGuCr176uxoCUdHeaFBT2ll7VUHUJwBSR2Es6XVq4nt8B1J4YDI71R+IDRQB slum5lGDzfFKONCBIbHrmth6gCsojBKD3/TsVAfxJ96yZ2UgagX2ohQCeRWj/GkvCchd NQ7hquDrXOSTlMUCNI/66GCZJoN579TluljBaw7g9zCnIWSmOFd/ZoiJkspxyOaOpRcd +8sDwc/H+qgMpB9TtN6Mz/Zxc0BI3bbWfWKinHd9qH/M+bxqhEerS+ljU64dy03R4Pre PL+g== X-Gm-Message-State: APf1xPD8wA5VEt3vJGAY/35H/+bx9aBT8hW0+DJ0bnKvk4UJSqicXyja 0NHNC4ZSLd9gFCjCnZT0HF4ZILiXgfk= X-Received: by 10.200.34.209 with SMTP id g17mr18745953qta.93.1519679054721; Mon, 26 Feb 2018 13:04:14 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH v2 21/21] nptl: riscv: Fix Race conditions in pthread cancellation (BZ#12683) Date: Mon, 26 Feb 2018 18:03:36 -0300 Message-Id: <1519679016-12241-22-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 riscv modifications required for the BZ#12683. It basically adds the required ucontext_get_pc function. The default syscall_cancel.c should be as expected for RISCV. With GCC 7.3.1 syscall_cancel.c generates the following code: 0000000000000000 <__GI___syscall_cancel_arch>: 0: 8346 mv t1,a7 0000000000000002 <__syscall_cancel_arch_start>: 2: 00052883 lw a7,0(a0) 6: 0048f893 andi a7,a7,4 a: 00089c63 bnez a7,22 <.L0 > e: 88ae mv a7,a1 10: 8532 mv a0,a2 12: 85b6 mv a1,a3 14: 863a mv a2,a4 16: 86be mv a3,a5 18: 8742 mv a4,a6 1a: 879a mv a5,t1 1c: 00000073 ecall 0000000000000020 <__syscall_cancel_arch_end>: 20: 8082 ret 22: 1141 addi sp,sp,-16 24: e406 sd ra,8(sp) 26: 00000097 auipc ra,0x0 2a: 000080e7 jalr ra # 26 <.L0 > Checked with a build for riscv64-linux-gnu with run-built-tests=no. [BZ #12683] * sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h (ucontext_get_pc): New fuction. --- ChangeLog | 4 ++++ sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h | 12 ++++++++++++ 2 files changed, 16 insertions(+) -- 2.7.4 diff --git a/sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h b/sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h index 3ca8a80..5a68ff8 100644 --- a/sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h @@ -16,6 +16,10 @@ License along with the GNU C Library. If not, see . */ +#ifndef _SIGCONTEXTINFO_H +#define _SIGCONTEXTINFO_H + +#include #include #define SIGCONTEXT siginfo_t *_si, ucontext_t * @@ -26,3 +30,11 @@ #define CALL_SIGHANDLER(handler, signo, ctx) \ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) + +static inline uintptr_t +ucontext_get_pc (const ucontext_t *uc) +{ + return uc->uc_mcontext.__gregs[REG_PC]; +} + +#endif /* _SIGCONTEXTINFO_H */