linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [RESEND PATCH V2] arm64: fault: avoid send SIGBUS two times
@ 2017-12-11 16:05 Dongjiu Geng
  2017-12-12  3:31 ` Xie XiuQi
  2017-12-12 18:17 ` James Morse
  0 siblings, 2 replies; 5+ messages in thread
From: Dongjiu Geng @ 2017-12-11 16:05 UTC (permalink / raw)
  To: linux-arm-kernel

do_sea() calls arm64_notify_die() which will always signal
user-space. It also returns whether APEI claimed the external
abort as a RAS notification. If it returns failure do_mem_abort()
will signal user-space too.

do_mem_abort() wants to know if we handled the error, we always
call arm64_notify_die() so can always return success.

Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>
---
1. Address James's comments to update the commit messages
2. Address James's comments to not change the si_code for SIGBUS
---
 arch/arm64/mm/fault.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index b64958b..38b9f3e 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -610,7 +610,6 @@ static int do_sea(unsigned long addr, unsigned int esr, struct pt_regs *regs)
 {
 	struct siginfo info;
 	const struct fault_info *inf;
-	int ret = 0;
 
 	inf = esr_to_fault_info(esr);
 	pr_err("Synchronous External Abort: %s (0x%08x) at 0x%016lx\n",
@@ -625,7 +624,7 @@ static int do_sea(unsigned long addr, unsigned int esr, struct pt_regs *regs)
 		if (interrupts_enabled(regs))
 			nmi_enter();
 
-		ret = ghes_notify_sea();
+		ghes_notify_sea();
 
 		if (interrupts_enabled(regs))
 			nmi_exit();
@@ -640,7 +639,7 @@ static int do_sea(unsigned long addr, unsigned int esr, struct pt_regs *regs)
 		info.si_addr  = (void __user *)addr;
 	arm64_notify_die("", regs, &info, esr);
 
-	return ret;
+	return 0;
 }
 
 static const struct fault_info fault_info[] = {
--
2.10.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [RESEND PATCH V2] arm64: fault: avoid send SIGBUS two times
  2017-12-11 16:05 [RESEND PATCH V2] arm64: fault: avoid send SIGBUS two times Dongjiu Geng
@ 2017-12-12  3:31 ` Xie XiuQi
  2017-12-12  4:15   ` gengdongjiu
  2017-12-12 18:17 ` James Morse
  1 sibling, 1 reply; 5+ messages in thread
From: Xie XiuQi @ 2017-12-12  3:31 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Dongjiu,

On 2017/12/12 0:05, Dongjiu Geng wrote:
> do_sea() calls arm64_notify_die() which will always signal
> user-space. It also returns whether APEI claimed the external
> abort as a RAS notification. If it returns failure do_mem_abort()
> will signal user-space too.
> 
> do_mem_abort() wants to know if we handled the error, we always
> call arm64_notify_die() so can always return success.
> 
> Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>
> ---
> 1. Address James's comments to update the commit messages
> 2. Address James's comments to not change the si_code for SIGBUS
> ---
>  arch/arm64/mm/fault.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
> index b64958b..38b9f3e 100644
> --- a/arch/arm64/mm/fault.c
> +++ b/arch/arm64/mm/fault.c
> @@ -610,7 +610,6 @@ static int do_sea(unsigned long addr, unsigned int esr, struct pt_regs *regs)
>  {
>  	struct siginfo info;
>  	const struct fault_info *inf;
> -	int ret = 0;
>  
>  	inf = esr_to_fault_info(esr);
>  	pr_err("Synchronous External Abort: %s (0x%08x) at 0x%016lx\n",
> @@ -625,7 +624,7 @@ static int do_sea(unsigned long addr, unsigned int esr, struct pt_regs *regs)
>  		if (interrupts_enabled(regs))
>  			nmi_enter();
>  
> -		ret = ghes_notify_sea();
> +		ghes_notify_sea();
>  
>  		if (interrupts_enabled(regs))
>  			nmi_exit();
> @@ -640,7 +639,7 @@ static int do_sea(unsigned long addr, unsigned int esr, struct pt_regs *regs)
>  		info.si_addr  = (void __user *)addr;
>  	arm64_notify_die("", regs, &info, esr);
>  
> -	return ret;
> +	return 0;

It looks good to me. do_sea() has done all necessary action for SEA, so it should always return 0,
no matter ghes_notify_sea() return true or false.

Reviewed-by: Xie XiuQi <xiexiuqi@huawei.com>

>  }
>  
>  static const struct fault_info fault_info[] = {
> --
> 2.10.1
> 

-- 
Thanks,
Xie XiuQi

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [RESEND PATCH V2] arm64: fault: avoid send SIGBUS two times
  2017-12-12  3:31 ` Xie XiuQi
@ 2017-12-12  4:15   ` gengdongjiu
  0 siblings, 0 replies; 5+ messages in thread
From: gengdongjiu @ 2017-12-12  4:15 UTC (permalink / raw)
  To: linux-arm-kernel


On 2017/12/12 11:31, Xie XiuQi wrote:
>> +	return 0;
> It looks good to me. do_sea() has done all necessary action for SEA, so it should always return 0,
> no matter ghes_notify_sea() return true or false.
yes, it is.

> 
> Reviewed-by: Xie XiuQi <xiexiuqi@huawei.com>

Thanks XiuQi's review and comments.

> 
>>  }

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [RESEND PATCH V2] arm64: fault: avoid send SIGBUS two times
  2017-12-11 16:05 [RESEND PATCH V2] arm64: fault: avoid send SIGBUS two times Dongjiu Geng
  2017-12-12  3:31 ` Xie XiuQi
@ 2017-12-12 18:17 ` James Morse
  2017-12-13  2:17   ` gengdongjiu
  1 sibling, 1 reply; 5+ messages in thread
From: James Morse @ 2017-12-12 18:17 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Dongjiu Geng,

On 11/12/17 16:05, Dongjiu Geng wrote:
> do_sea() calls arm64_notify_die() which will always signal
> user-space. It also returns whether APEI claimed the external
> abort as a RAS notification. If it returns failure do_mem_abort()
> will signal user-space too.
> 
> do_mem_abort() wants to know if we handled the error, we always
> call arm64_notify_die() so can always return success.
> 
> Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>

Reviewed-by: James Morse <james.morse@arm.com>


Nit: Your 'RESEND V2' and 'V2' are not the same patch.
'RESEND' is to indicate you're reposting exactly the same patch, usually with a
fixed CC list. Anyone who receives both can ignore one as you've said they are
the same.



Thanks,

James

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [RESEND PATCH V2] arm64: fault: avoid send SIGBUS two times
  2017-12-12 18:17 ` James Morse
@ 2017-12-13  2:17   ` gengdongjiu
  0 siblings, 0 replies; 5+ messages in thread
From: gengdongjiu @ 2017-12-13  2:17 UTC (permalink / raw)
  To: linux-arm-kernel

> Reviewed-by: James Morse <james.morse@arm.com>
> 
> 
> Nit: Your 'RESEND V2' and 'V2' are not the same patch.
> 'RESEND' is to indicate you're reposting exactly the same patch, usually with a
> fixed CC list. Anyone who receives both can ignore one as you've said they are
> the same.

James,
  Thanks for the reminder and guild, I will send a version V3 to eliminate this confusion

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-12-13  2:17 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-11 16:05 [RESEND PATCH V2] arm64: fault: avoid send SIGBUS two times Dongjiu Geng
2017-12-12  3:31 ` Xie XiuQi
2017-12-12  4:15   ` gengdongjiu
2017-12-12 18:17 ` James Morse
2017-12-13  2:17   ` gengdongjiu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).