From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Adhemerval Zanella Newsgroups: gmane.comp.lib.glibc.alpha 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> References: <1519679016-12241-1-git-send-email-adhemerval.zanella@linaro.org> NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1519679083 25898 195.159.176.226 (26 Feb 2018 21:04:43 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 26 Feb 2018 21:04:43 +0000 (UTC) To: libc-alpha@sourceware.org Original-X-From: libc-alpha-return-90633-glibc-alpha=m.gmane.org@sourceware.org Mon Feb 26 22:04:39 2018 Return-path: Envelope-to: glibc-alpha@blaine.gmane.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=e1Cp5HTrYudDpXaQduflG0QLL01lm4v IQ9oZVAFEX883w5+cnsfgja0g1hDiBqrnRQs8wKCram7xarzVE+cXGBFusnwuA2l vpeFdTgtk+ecLvPtM9J/oL8lzeyo2DIdY4FCT5nwG0+5ITPcclSZNpjr0v1KG8xr GDqFDQJihQlA= 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=VVvFb Yll1NvxwJOGFXg4aykowW/zESrIyaGC/tJWZBhiXZe+9BEHjpQJBHfSGt/r1BNaq bYHe34dacr7FIdte/266peJsNvtt3sa9BFJhLdwib1QdJ1hIbKOy++poJcHVOyQY gp42KPhXg5K32A8WSJiPW5MNES+P5ZWQ4iUge0= 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: , Original-Sender: libc-alpha-owner@sourceware.org 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-Google-Smtp-Source: AG47ELv3RtqrVc3PXYObR5NzmhGkUEB5F/aPj1Ezp7sxzE4r18RbxSsGwAQ3dVBRHHO5hEsPcyVYqQ== X-Received: by 10.200.43.21 with SMTP id 21mr18869332qtu.98.1519679049686; Mon, 26 Feb 2018 13:04:09 -0800 (PST) In-Reply-To: <1519679016-12241-1-git-send-email-adhemerval.zanella@linaro.org> Xref: news.gmane.org gmane.comp.lib.glibc.alpha:82965 Archived-At: Received: from server1.sourceware.org ([209.132.180.131] helo=sourceware.org) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eqPwt-0006L5-Ak for glibc-alpha@blaine.gmane.org; Mon, 26 Feb 2018 22:04:39 +0100 Received: (qmail 79039 invoked by alias); 26 Feb 2018 21:04:24 -0000 Received: (qmail 77690 invoked by uid 89); 26 Feb 2018 21:04:13 -0000 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(+) 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 */ -- 2.7.4