From patchwork Mon Feb 26 21:03:32 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: 129718 Delivered-To: patch@linaro.org Received: by 10.80.172.228 with SMTP id x91csp4292426edc; Mon, 26 Feb 2018 13:06:52 -0800 (PST) X-Google-Smtp-Source: AH8x2274A7nCMkTxV/wniE/iRDtipA4XleDin8m6BT09SLbt9ATNqIfla4A7IXfJ5BEE/cwi654g X-Received: by 2002:a17:902:a504:: with SMTP id s4-v6mr12216918plq.43.1519679212456; Mon, 26 Feb 2018 13:06:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519679212; cv=none; d=google.com; s=arc-20160816; b=zSzZgsBcD4AZqaiFiMM7biDkX4UA/BvDG4gK1lKj3BHXszHW5QEnq5vdjZxToa0HJy XNRXvzklUphfbQHwetZ5Fv6uK+P45Ga2Muvhxo0kX1msEhfJNQZtXx0wLNivtbMLzy9D 0+ZHJHDBkzFD1tgyXoLza975EkmF4CBwO8tqf2yz8KDWxw73ZTcqyPKlMcKr4602pkgm 3wx0KFH8sdgbhfMPa7SH5PYEzfGZz/RbImDFr2AsYxmGtWVGxkr9VIViiT45CAXzhGvv gW6mRtbce84GZhLGI+f1j5j0S/s6UnBBqm6QSiG6ub+EY5XVVoOsmRJbTgP3bvONrBmK i1mA== 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=BTN6rCfFWj0B5lk3A0HUW7Wol1AerOCIQypjTi1gqaA=; b=D2cB6Gx6TNNWYUhcUQFV290qStQdf7in48UYCc27nQ0JX9vPyvMhKK/bLCBbjc0sA7 3xVeGnl8PAaiSqcowf+3gagNCcYP7rh/HzpETgN7oCwSXAWONtj5BRtN+JcMe+Zb3Ksj lbPZMv7DEDpn7fonRQsmpJwjKpHLG4Bwz9aasZHYXWe9CgK54H3w9lDo2p8I+Nppq5S9 g0m3U4kYiCE5lUCFqRtl5rjfVpYA4AjHjR4cUrozBz4ws7SfZLMqBKUymTqrcVWqMEOr okGV9cJdunjchhrQbYzMNdQwZamG7KX32YlEp8HcLRFo24Ep/RV6YU1cRStnnk5dAeCH UFIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=sCyvO06R; spf=pass (google.com: domain of libc-alpha-return-90633-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-90633-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 d4si5973768pgq.337.2018.02.26.13.06.52 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 26 Feb 2018 13:06:52 -0800 (PST) Received-SPF: pass (google.com: domain of libc-alpha-return-90633-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=sCyvO06R; spf=pass (google.com: domain of libc-alpha-return-90633-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-90633-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=Ugu/SH+M1GrRAlnnMiHdt0TN4YQ7YP5 4zwlM97dDIpm/rH0YDyhtc0W5qQrmakpjWXh/JOlvbJK2wBd0XJxF5kwPe4a1umQ R4zLTAl1ddeaBEudNQ07xDK98VZPIVlfzJn6nQ0hx856rWutuABs3dSkOW5nMC13 9VCo+Fq2hqGQ= 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=VfATniROpP/TgWjc6QYd/wKoveA=; b=sCyvO 06RjJSvPSNGHQrZqu57G87xbehW5ox5ZGigDY6BrceWvfTrICEdOjb1VPmhaoXHG 1AtPg4+g7QXSwhwdktcrlCELS9/wZWMh0ljNnikcKtzOOX/vWn0qXGNpWCATPgwO cjMJaBO7SZCqleTAvSv1ZdN9s0s1ZKmnvu18Kk= Received: (qmail 79039 invoked by alias); 26 Feb 2018 21:04:24 -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 77690 invoked by uid 89); 26 Feb 2018 21:04:13 -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=r2, 0 X-HELO: mail-qt0-f195.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=BTN6rCfFWj0B5lk3A0HUW7Wol1AerOCIQypjTi1gqaA=; b=rITk9NJmzSNd8cYwwh05ZeHTojwco7Uhv6qVX0Jx0mJ2/TJ3Pvm2CoAg2IywbG+ZWz zZejzgeTpOuqXAc2ilid3if1KzAyHsPvkUWKSd4PF2X896MYimmj9Lrw6V9yiZWS+49A lUPLsCyuXXmNyfXbaj9oZqyj4NJdBIei8m/8HmnK/Yh/TsxRpB5roevIJ2MUcD9QRLWI 3JG9Yb3vTpT+ahsIXVY8/17d5dybhCOAHPysVUM3pulqdH5oz2XMz+KwI8+QHjI+Dqul 6Gci4GvCBLYoHNJfmDUgPDw3SZLgWel/RBWHk8t4oiq/UfbEho18vvPD5D6VawbqKusx paTA== X-Gm-Message-State: APf1xPDbfQkwa6nX/oLK3uElfhN6t4bSFUPvpXjKfhl1VuEBy6/bUc9S J69j4IRX4QuCAmaFSrnlc9Lw3j4yW94= X-Received: by 10.200.43.21 with SMTP id 21mr18869332qtu.98.1519679049686; Mon, 26 Feb 2018 13:04:09 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH v2 17/21] nptl: nios2: Fix Race conditions in pthread cancellation (BZ#12683) Date: Mon, 26 Feb 2018 18:03:32 -0300 Message-Id: <1519679016-12241-18-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 nios2 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 NIOS2. With GCC 6.2.1 syscall_cancel.c generates the following code: --- 00000000 <__GI___syscall_cancel_arch>: 0: defffe04 addi sp,sp,-8 4: dd800015 stw r22,0(sp) 8: 002ce03a nextpc r22 c: 02000034 movhi r8,0 10: 42000004 addi r8,r8,0 14: dfc00115 stw ra,4(sp) 18: b22d883a add r22,r22,r8 0000001c <__syscall_cancel_arch_start>: 1c: 20c00017 ldw r3,0(r4) 20: 18c0010c andi r3,r3,4 24: 18000f1e bne r3,zero,64 <__syscall_cancel_arch_end+0x18> 28: 3015883a mov r10,r6 2c: 2805883a mov r2,r5 30: da400517 ldw r9,20(sp) 34: 380b883a mov r5,r7 38: da000417 ldw r8,16(sp) 3c: d9c00317 ldw r7,12(sp) 40: d9800217 ldw r6,8(sp) 44: 5009883a mov r4,r10 48: 003b683a trap 0 0000004c <__syscall_cancel_arch_end>: 4c: 38000126 beq r7,zero,54 <__syscall_cancel_arch_end+0x8> 50: 0085c83a sub r2,zero,r2 54: dfc00117 ldw ra,4(sp) 58: dd800017 ldw r22,0(sp) 5c: dec00204 addi sp,sp,8 60: f800283a ret 64: b0800017 ldw r2,0(r22) 68: 103ee83a callr r2 --- Checked against a build and make check run-built-tests=no for nios2-linux-gnu. [BZ #12683] * sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h (ucontext_get_pc): New function. --- ChangeLog | 4 ++++ sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) -- 2.7.4 diff --git a/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h b/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h index 57b9b50..7ae735f 100644 --- a/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h @@ -16,6 +16,11 @@ License along with the GNU C Library; if not, see . */ +#ifndef _SIGCONTEXTINFO_H +#define _SIGCONTEXTINFO_H + +#include + #include #include "kernel-features.h" @@ -33,3 +38,14 @@ (act)->sa_flags |= SA_SIGINFO; \ (sigaction) (sig, act, oact); \ }) + +static inline uintptr_t +ucontext_get_pc (const ucontext_t *uc) +{ + /* rt_restore_ucontext (arch/nios/kernel/signal.c) sets this position + to 'ea' register which is stated as exception return address (pc) + at arch/nios2/include/asm/ptrace.h. */ + return uc->uc_mcontext.regs[27]; +} + +#endif /* _SIGCONTEXTINFO_H */