Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp2692984imm; Mon, 24 Sep 2018 08:27:30 -0700 (PDT) X-Google-Smtp-Source: ANB0Vdb2+dNz/ii/cmxbdkXuCProWfYFSEMJ9nJjp8Tt84h21NBWHB5Z8Ic8FaC6uIebnS/rUMn0 X-Received: by 2002:a63:904a:: with SMTP id a71-v6mr7188024pge.264.1537802850161; Mon, 24 Sep 2018 08:27:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537802850; cv=none; d=google.com; s=arc-20160816; b=iqlZE+JDCgvAqIVoCjJh5CLcU4Hbpe4c4GrMOz1tFwWd4uTsT9y0k2UeYIh9WJyjP2 D+6FjAeISjOZLGSJHEmaUfklNmH/ckybqg2lSZW6vMHzKZMzz1PuaC15BKD+EGa2JyOf 1YzpTqjcTSBPHerpL3l9X+DEdIkuGg59EQJT/ToTt6qJ4PVxMYz5AfZgY2+RnRPY7Gqc j7Hga/gUD49Y5wKNl72BaIwEdXH6LQaRLTHd43bF22ABbajfr3E7mKPnK8CJxjZO2jsQ RtoR1zCH/awmtViVHPjrfWmTuiV+sQELksSegWA558CYxY2ZehOu7QrJcPuS1SPr30qE KHAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:subject:references:in-reply-to:message-id :date:cc:to:from; bh=2fF5a4Qb+HWj77xF8CIFkOVsHEZv8ADMRFnwNuEHut4=; b=EEl8PNCdbZtVHf08wMLGmFqPz53Aj/GhhcIflQOZUbnMW8eCSHZhBrhqXCEiMhUgvN Uy3WsTr/T62Wvv0cXgIQoAJbgO98zJxkEFr2oalu9zYcdQRKXOov9Tz/LJjVTqTvbXsy Z4ZPtJuNufOzWxFVG/tEyEcGJj+7zpofd0mjF7lyCEJ17k17otkQ0S/qe1iIJAMNJiIJ LlNqXVj37XP1zI8/wmdrZbGYfc8R6hHWWXscYogUNHNorJKgGBkE/3igNnYS6SE65xKg LGOdoxngwcK2f5/eommrOSSrCOhnae/y0PmGbQgI/Rzn4A3AF8IqgsDwQrd9U+6jRxfW uyTg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w24-v6si2922275pgi.313.2018.09.24.08.26.45; Mon, 24 Sep 2018 08:27:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730559AbeIXV3J (ORCPT + 99 others); Mon, 24 Sep 2018 17:29:09 -0400 Received: from out01.mta.xmission.com ([166.70.13.231]:44015 "EHLO out01.mta.xmission.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728572AbeIXV3I (ORCPT ); Mon, 24 Sep 2018 17:29:08 -0400 Received: from in02.mta.xmission.com ([166.70.13.52]) by out01.mta.xmission.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.87) (envelope-from ) id 1g4Skj-0006kE-Tg; Mon, 24 Sep 2018 09:26:25 -0600 Received: from [105.184.227.67] (helo=x220.Home) by in02.mta.xmission.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_CBC_SHA256:128) (Exim 4.87) (envelope-from ) id 1g4Ski-00018i-9L; Mon, 24 Sep 2018 09:26:25 -0600 From: "Eric W. Biederman" To: linux-kernel@vger.kernel.org Cc: linux-arch@vger.kernel.org, Guan Xuetao , "Eric W. Biederman" Date: Mon, 24 Sep 2018 17:25:36 +0200 Message-Id: <20180924152537.19515-2-ebiederm@xmission.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <87lg7q2a2w.fsf@xmission.com> References: <87lg7q2a2w.fsf@xmission.com> X-XM-SPF: eid=1g4Ski-00018i-9L;;;mid=<20180924152537.19515-2-ebiederm@xmission.com>;;;hst=in02.mta.xmission.com;;;ip=105.184.227.67;;;frm=ebiederm@xmission.com;;;spf=neutral X-XM-AID: U2FsdGVkX1+qhlWIsWuIrX0L/SRx8fZRpTQdeKqXHuQ= X-SA-Exim-Connect-IP: 105.184.227.67 X-SA-Exim-Mail-From: ebiederm@xmission.com X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on sa03.xmission.com X-Spam-Level: *** X-Spam-Status: No, score=3.5 required=8.0 tests=ALL_TRUSTED,BAYES_50, DCC_CHECK_NEGATIVE,TR_Symld_Words,T_TooManySym_01,XMNoVowels,XMSubLong autolearn=disabled version=3.4.0 X-Spam-Report: * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * 1.5 TR_Symld_Words too many words that have symbols inside * 0.7 XMSubLong Long Subject * 1.5 XMNoVowels Alpha-numberic number with no vowels * 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% * [score: 0.5000] * -0.0 DCC_CHECK_NEGATIVE Not listed in DCC * [sa03 1397; Body=1 Fuz1=1 Fuz2=1] * 0.0 T_TooManySym_01 4+ unique symbols in subject X-Spam-DCC: XMission; sa03 1397; Body=1 Fuz1=1 Fuz2=1 X-Spam-Combo: ***;linux-kernel@vger.kernel.org X-Spam-Relay-Country: X-Spam-Timing: total 799 ms - load_scoreonly_sql: 0.33 (0.0%), signal_user_changed: 17 (2.2%), b_tie_ro: 14 (1.7%), parse: 3.2 (0.4%), extract_message_metadata: 32 (4.0%), get_uri_detail_list: 4.4 (0.5%), tests_pri_-1000: 13 (1.6%), tests_pri_-950: 3.0 (0.4%), tests_pri_-900: 2.0 (0.3%), tests_pri_-400: 38 (4.8%), check_bayes: 36 (4.5%), b_tokenize: 17 (2.1%), b_tok_get_all: 7 (0.9%), b_comp_prob: 4.9 (0.6%), b_tok_touch_all: 3.4 (0.4%), b_finish: 1.13 (0.1%), tests_pri_0: 670 (83.8%), check_dkim_signature: 2.0 (0.3%), check_dkim_adsp: 6 (0.7%), tests_pri_500: 13 (1.6%), rewrite_mail: 0.00 (0.0%) Subject: [REVIEW][PATCH 2/3] signal/unicore32: Generate siginfo in ucs32_notify_die X-Spam-Flag: No X-SA-Exim-Version: 4.2.1 (built Thu, 05 May 2016 13:38:54 -0600) X-SA-Exim-Scanned: Yes (on in02.mta.xmission.com) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Pass the signal number, and the signal code, and the faulting address into uc32_notify_die so the callers do not need to generate a struct siginfo. In ucs32_ntoify_die use the newly passed in information to call force_sig_fault to generate the siginfo and send the error. This simplifies the code making the chances of bugs much less likely. Signed-off-by: "Eric W. Biederman" --- arch/unicore32/include/asm/bug.h | 3 ++- arch/unicore32/kernel/traps.c | 5 +++-- arch/unicore32/mm/fault.c | 18 ++++-------------- 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/arch/unicore32/include/asm/bug.h b/arch/unicore32/include/asm/bug.h index 93a56f3e2344..83c7687a0e61 100644 --- a/arch/unicore32/include/asm/bug.h +++ b/arch/unicore32/include/asm/bug.h @@ -17,6 +17,7 @@ struct siginfo; extern void die(const char *msg, struct pt_regs *regs, int err); extern void uc32_notify_die(const char *str, struct pt_regs *regs, - struct siginfo *info, unsigned long err, unsigned long trap); + int sig, int code, void __user *addr, + unsigned long err, unsigned long trap); #endif /* __UNICORE_BUG_H__ */ diff --git a/arch/unicore32/kernel/traps.c b/arch/unicore32/kernel/traps.c index c4ac6043ebb0..fb376d83e043 100644 --- a/arch/unicore32/kernel/traps.c +++ b/arch/unicore32/kernel/traps.c @@ -241,13 +241,14 @@ void die(const char *str, struct pt_regs *regs, int err) } void uc32_notify_die(const char *str, struct pt_regs *regs, - struct siginfo *info, unsigned long err, unsigned long trap) + int sig, int code, void __user *addr, + unsigned long err, unsigned long trap) { if (user_mode(regs)) { current->thread.error_code = err; current->thread.trap_no = trap; - force_sig_info(info->si_signo, info, current); + force_sig_fault(sig, code, addr, current); } else die(str, regs, err); } diff --git a/arch/unicore32/mm/fault.c b/arch/unicore32/mm/fault.c index 8f12a5b50a42..a942776110a0 100644 --- a/arch/unicore32/mm/fault.c +++ b/arch/unicore32/mm/fault.c @@ -466,7 +466,6 @@ asmlinkage void do_DataAbort(unsigned long addr, unsigned int fsr, struct pt_regs *regs) { const struct fsr_info *inf = fsr_info + fsr_fs(fsr); - struct siginfo info; if (!inf->fn(addr, fsr & ~FSR_LNX_PF, regs)) return; @@ -474,19 +473,14 @@ asmlinkage void do_DataAbort(unsigned long addr, unsigned int fsr, printk(KERN_ALERT "Unhandled fault: %s (0x%03x) at 0x%08lx\n", inf->name, fsr, addr); - clear_siginfo(&info); - info.si_signo = inf->sig; - info.si_errno = 0; - info.si_code = inf->code; - info.si_addr = (void __user *)addr; - uc32_notify_die("", regs, &info, fsr, 0); + uc32_notify_die("", regs, inf->sig, inf->code, (void __user *)addr, + fsr, 0); } asmlinkage void do_PrefetchAbort(unsigned long addr, unsigned int ifsr, struct pt_regs *regs) { const struct fsr_info *inf = fsr_info + fsr_fs(ifsr); - struct siginfo info; if (!inf->fn(addr, ifsr | FSR_LNX_PF, regs)) return; @@ -494,10 +488,6 @@ asmlinkage void do_PrefetchAbort(unsigned long addr, printk(KERN_ALERT "Unhandled prefetch abort: %s (0x%03x) at 0x%08lx\n", inf->name, ifsr, addr); - clear_siginfo(&info); - info.si_signo = inf->sig; - info.si_errno = 0; - info.si_code = inf->code; - info.si_addr = (void __user *)addr; - uc32_notify_die("", regs, &info, ifsr, 0); + uc32_notify_die("", regs, inf->sig, inf->code, (void __user *)addr, + ifsr, 0); } -- 2.17.1