From patchwork Mon Dec 11 19:07:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 121452 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp3170085qgn; Mon, 11 Dec 2017 11:10:40 -0800 (PST) X-Google-Smtp-Source: ACJfBov2X94nbfXcVVSzyucZYM6UMiTH3g6Ng26KvRcFLLVnHNUD1RlqYnE38fepd2iiTGshJIX6 X-Received: by 10.84.213.144 with SMTP id g16mr1273685pli.339.1513019440835; Mon, 11 Dec 2017 11:10:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1513019440; cv=none; d=google.com; s=arc-20160816; b=oQb7gIA7hwyTDOAPU4Wm4tqBtyYNhiXf3UcCPc2D2xrGJiKHPqEJxMsgWoWL/eyDwD 3EnwWL5gbbMy5jhBguS20w9AnNgEQ226sYgErL7H3v2g/KhaXrGIS1fQd2r6fyB8h9Xm EXy5tnUwzCbt2sdHYW8Ve47NfcLZ7tZUs4Zyy6RR8INeWt1VxX6Kk6IzmABB+mOiz9nB 1oAEgL4PmEv/374QLXy8Gngktl8hwURTQcn2MRJdQRC3g4wo/+0tKvIKSR1B2/2BM17Q zefmxmXnA+7pPuvb6KoV5LRB/uQ31iScQ22aT/T9bX1Z8m9/uv8Al5+WrcQUzJC65muu KpWw== 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=7PgEL57awyVKGWgql6fFXSY5SXhXxnCYSawkCnQ5G5w=; b=oQMik+wXFdTIs68q8Qg4MraWtai/D+9iKvYTLHa8TFMU6lXoBd6Zw/vvtPBuiQi7O/ /hRVZzTj1GE1bvAp2PWmcqbak2wo6vkqjYU0Tk/j/FoFCjMnWWeVpNhi7wQpU3CWaPYJ mL9+e6PGrmYsPngYjw0JGwh2WmIubA5q5fo7yRg5VfTE3KEyX4Fp+CzggVzohfKrlG6q j1UzAhNJcT4YvsZhUTMbCeGEiDnXC7rSrvYs2Xl5NChdoeSCuq944HwsslhvX/8JVsrt J3rNyaZvV19lM9MI3p3+7RpP0/KwY78354bwA+T6xQpsc3olT7ODWlt0sGgd4nKF0t25 5pxw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=lTjDAnW8; spf=pass (google.com: domain of libc-alpha-return-88029-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-88029-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 w24si9389706plq.159.2017.12.11.11.10.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Dec 2017 11:10:40 -0800 (PST) Received-SPF: pass (google.com: domain of libc-alpha-return-88029-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=lTjDAnW8; spf=pass (google.com: domain of libc-alpha-return-88029-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-88029-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=rtdG7vssDLdccUyTMNPptka6JhMMvZ4 cXH5qTWbuQ36LCgaAAZOMbVXQpKh4Ylh1KORlA17dLBqd1n/MgYSung0eBOd6lED BMyHtuV8Q2pT1/cqGM7WkXiZrCVwAJAGrwcB+o1AIO532Qo0BzFUpXR4Q/ln0vEh Az9bVj6WOr+M= 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=eDPP5lw4KC16fUH49Qx++vvyYaI=; b=lTjDA nW8nINTq/x69QbOIR1NsG508Y/StSdt9DAcdvepcNY10SMi1EniLPT8iiYzH69Fv 6a/UloUHWfEI+mAn9TAjRNzLolCGF66VW9HcFDBzv8pNvYzWw5J1tiepXdFMWtFT 2r6/Q0TxnEPDTqZr4F7a72jG1hIZ4OCEk0gNAw= Received: (qmail 42790 invoked by alias); 11 Dec 2017 19:07:38 -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 42768 invoked by uid 89); 11 Dec 2017 19:07:37 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 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=nios, r2, 0 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=7PgEL57awyVKGWgql6fFXSY5SXhXxnCYSawkCnQ5G5w=; b=GQWyrS5TdJL2MENVNNF3KmfnjysP3eLC26C2UN4d9t2xzSR2A44awykeATIrUS5Vad Knc+TSopH+d2PN/MzTuoKQ9gKU9hVGIfK75UxQw8a9/df9V+pSoRSGHB2W1diJmj5qh8 hvTiuRgoe98Z9LP3pU6g6qAyp7xlbyD7kPMz/LN7joJHRLHhfnMY2U8jFcP4ZAynJdrr eFTHvkhnSeHawc1uESPXaV3mUPQboxmQ19f5/DuVKjymADeaSlr0BKJURRL8Ih5yPRW7 2YKvsGq60xUkex/OEYgxTuxSt2zJ4J0AQ+Klm/xCKUB8UmOwe7PYwhUjjTperRf4dUaC SnWA== X-Gm-Message-State: AKGB3mJzbenlPTZCiDkf7KvMPSRyuhrQdKmWRgtnc6Y3AlFNuGJNCB2S dsAtBiOdKWqN8prAzTpzBvnAEIfnJXM= X-Received: by 10.237.33.248 with SMTP id m53mr2013216qtc.39.1513019254534; Mon, 11 Dec 2017 11:07:34 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 16/19] nptl: nios2: Fix Race conditions in pthread cancellation (BZ#12683) Date: Mon, 11 Dec 2017 17:07:00 -0200 Message-Id: <1513019223-7603-17-git-send-email-adhemerval.zanella@linaro.org> In-Reply-To: <1513019223-7603-1-git-send-email-adhemerval.zanella@linaro.org> References: <1513019223-7603-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. * sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h (ucontext_get_pc): New function. Signed-off-by: Adhemerval Zanella --- ChangeLog | 3 +++ sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) -- 2.7.4 diff --git a/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h b/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h index b244478..1fba6cd 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 */