linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/1] mm: call force_sig_info before prints
@ 2016-12-19 10:37 Maninder Singh
  2016-12-19 11:07 ` Russell King - ARM Linux
       [not found] ` <CGME20161219110753epcas3p1e2a8b5ce7bd4b4e26345f28ae803d72b@epcas3p1.samsung.com>
  0 siblings, 2 replies; 3+ messages in thread
From: Maninder Singh @ 2016-12-19 10:37 UTC (permalink / raw)
  To: linux, catalin.marinas, will.deacon, akpm, kirill.shutemov
  Cc: jack, mark.rutland, james.morse, sandeepa.s.prabhu, labbott,
	shijie.huang, linux-arm-kernel, linux-kernel, ajeet.y, pankaj.m,
	Maninder Singh, Amit Nagal

prints can delay queuing of signal, so better to print
after force_sig_info.

Let's say process generated SIGSEGV , and some other thread sends
SIGKILL to crashing process and it gets queued before SIGSEGV becuase
of little delay due to prints so in this case coredump might not generate.

Signed-off-by: Maninder Singh <maninder1.s@samsung.com>
Signed-off-by: Amit Nagal <amit.nagal@samsung.com>
Reviewed-by: Ajeet Yadav <ajeet.y@samsung.com>
---
 arch/arm/mm/fault.c   | 18 +++++++++---------
 arch/arm64/mm/fault.c | 16 ++++++++--------
 2 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index 3a2e678..f92f90b 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -163,6 +163,15 @@ void show_pte(struct mm_struct *mm, unsigned long addr)
 {
 	struct siginfo si;
 
+	tsk->thread.address = addr;
+	tsk->thread.error_code = fsr;
+	tsk->thread.trap_no = 14;
+	si.si_signo = sig;
+	si.si_errno = 0;
+	si.si_code = code;
+	si.si_addr = (void __user *)addr;
+	force_sig_info(sig, &si, tsk);
+
 #ifdef CONFIG_DEBUG_USER
 	if (((user_debug & UDBG_SEGV) && (sig == SIGSEGV)) ||
 	    ((user_debug & UDBG_BUS)  && (sig == SIGBUS))) {
@@ -172,15 +181,6 @@ void show_pte(struct mm_struct *mm, unsigned long addr)
 		show_regs(regs);
 	}
 #endif
-
-	tsk->thread.address = addr;
-	tsk->thread.error_code = fsr;
-	tsk->thread.trap_no = 14;
-	si.si_signo = sig;
-	si.si_errno = 0;
-	si.si_code = code;
-	si.si_addr = (void __user *)addr;
-	force_sig_info(sig, &si, tsk);
 }
 
 void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index a78a5c4..eb5d0e3 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -197,14 +197,6 @@ static void __do_user_fault(struct task_struct *tsk, unsigned long addr,
 {
 	struct siginfo si;
 
-	if (unhandled_signal(tsk, sig) && show_unhandled_signals_ratelimited()) {
-		pr_info("%s[%d]: unhandled %s (%d) at 0x%08lx, esr 0x%03x\n",
-			tsk->comm, task_pid_nr(tsk), fault_name(esr), sig,
-			addr, esr);
-		show_pte(tsk->mm, addr);
-		show_regs(regs);
-	}
-
 	tsk->thread.fault_address = addr;
 	tsk->thread.fault_code = esr;
 	si.si_signo = sig;
@@ -212,6 +204,14 @@ static void __do_user_fault(struct task_struct *tsk, unsigned long addr,
 	si.si_code = code;
 	si.si_addr = (void __user *)addr;
 	force_sig_info(sig, &si, tsk);
+
+	if (unhandled_signal(tsk, sig) && show_unhandled_signals_ratelimited()) {
+		pr_info("%s[%d]: unhandled %s (%d) at 0x%08lx, esr 0x%03x\n",
+			tsk->comm, task_pid_nr(tsk), fault_name(esr), sig,
+			addr, esr);
+		show_pte(tsk->mm, addr);
+		show_regs(regs);
+	}
 }
 
 static void do_bad_area(unsigned long addr, unsigned int esr, struct pt_regs *regs)
-- 
1.9.1

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

* Re: [PATCH 1/1] mm: call force_sig_info before prints
  2016-12-19 10:37 [PATCH 1/1] mm: call force_sig_info before prints Maninder Singh
@ 2016-12-19 11:07 ` Russell King - ARM Linux
       [not found] ` <CGME20161219110753epcas3p1e2a8b5ce7bd4b4e26345f28ae803d72b@epcas3p1.samsung.com>
  1 sibling, 0 replies; 3+ messages in thread
From: Russell King - ARM Linux @ 2016-12-19 11:07 UTC (permalink / raw)
  To: Maninder Singh
  Cc: catalin.marinas, will.deacon, akpm, kirill.shutemov,
	mark.rutland, jack, linux-kernel, ajeet.y, shijie.huang,
	james.morse, sandeepa.s.prabhu, labbott, Amit Nagal,
	linux-arm-kernel, pankaj.m

On Mon, Dec 19, 2016 at 04:07:12PM +0530, Maninder Singh wrote:
> prints can delay queuing of signal, so better to print
> after force_sig_info.
> 
> Let's say process generated SIGSEGV , and some other thread sends
> SIGKILL to crashing process and it gets queued before SIGSEGV becuase
> of little delay due to prints so in this case coredump might not generate.

In any case, that's going to be a race - you can't predict exactly when
the "other thread" will send the SIGKILL in relation to the SIGSEGV.

So, I don't see the point of this change.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

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

* Re: Re: [PATCH 1/1] mm: call force_sig_info before prints
       [not found]   ` <20161221055911epcms5p1146cee9212cc17fa8d5b18c49a085def@epcms5p1>
@ 2016-12-21  9:21     ` Russell King - ARM Linux
  0 siblings, 0 replies; 3+ messages in thread
From: Russell King - ARM Linux @ 2016-12-21  9:21 UTC (permalink / raw)
  To: AMIT NAGAL
  Cc: Maninder Singh, catalin.marinas, will.deacon, akpm,
	kirill.shutemov, mark.rutland, jack, linux-kernel,
	Ajeet Kumar Yadav, shijie.huang, james.morse, sandeepa.s.prabhu,
	labbott, linux-arm-kernel, PANKAJ MISHRA, Vaneet Narang

This is unreadable.  Sorry.

On Wed, Dec 21, 2016 at 05:59:11AM +0000, AMIT NAGAL wrote:
> <HTML><HEAD>
> <META content="text/html; charset=utf-8" http-equiv=Content-Type>
> <STYLE id=mysingle_style type=text/css>.search-word {
> 	BACKGROUND-COLOR: #ffee94
> }
> P {
> 	MARGIN-BOTTOM: 5px; FONT-SIZE: 10pt; FONT-FAMILY: Arial, arial; MARGIN-TOP: 5px
> }
> TD {
> 	MARGIN-BOTTOM: 5px; FONT-SIZE: 10pt; FONT-FAMILY: Arial, arial; MARGIN-TOP: 5px
> }
> LI {
> 	MARGIN-BOTTOM: 5px; FONT-SIZE: 10pt; FONT-FAMILY: Arial, arial; MARGIN-TOP: 5px
> }
> BODY {
> 	FONT-SIZE: 10pt; FONT-FAMILY: Arial, arial
> }
> </STYLE>
> 
> <META content=IE=5 http-equiv=X-UA-Compatible>
> <META content=IE=5 http-equiv=X-UA-Compatible>
> <STYLE id=knox_style type=text/css>P {
> 	MARGIN-BOTTOM: 5px; FONT-SIZE: 10pt; FONT-FAMILY: Arial, arial; MARGIN-TOP: 5px
> }
> </STYLE>
> 
> <META content=IE=5 http-equiv=X-UA-Compatible>
> <META name=GENERATOR content="MSHTML 11.00.9600.18500"></HEAD>
> <BODY>
> <P></P>
> <P>Hello,</P><PRE>On Mon, Dec 19, 2016 at 04:07:12PM +0530, Maninder Singh wrote:
> &gt;&gt; prints can delay queuing of signal, so better to print
> &gt;&gt;after force_sig_info.
> &gt;&gt; 
> &gt;&gt; Let's say process generated SIGSEGV , and some other thread sends
> &gt;&gt; SIGKILL to crashing process and it gets queued before SIGSEGV becuase
> &gt;&gt; of little delay due to prints so in this case coredump might not generate.
> 
> &gt; In any case, that's going to be a race - you can't predict exactly when
> &gt; the "other thread" will send the SIGKILL in relation to the SIGSEGV.
> 
> &gt; So, I don't see the point of this change.</PRE><PRE>Actually SIGSEGV queueing gets delayed in __do_user_fault as logs are printed first(show_pte , show_regs).</PRE><PRE>meanwhile if SIGKILL gets queued , SIGSEGV wont be serviced first and coredump will be skipped . </PRE><PRE>so our intention is to queue the SIGSEGV as early as possible . so that the probability of race between</PRE><PRE>SIGKILL and SIGSEGV can be minimized .</PRE><PRE>Amit</PRE><PRE>&nbsp;</PRE><table id=bannersignimg><tr><td><div id="cafe-note-contents" style="margin:10px;font-family:Arial;font-size:10pt;"><p>&nbsp;</p></div></td></tr></table><table id=confidentialsignimg><tr><td><div id="cafe-note-contents" style="margin:10px;font-family:Arial;font-size:10pt;"><p><img unselectable="on" data-cui-image="true" style="display: inline-block; border: 0px solid; width: 520px; height: 144px;" src="cid:cafe_image_0@s-core.co.kr"><br></p></div></td></tr></table></BODY></HTML><img src='http://ext.samsung.net/mail/ext/v1/external/status/update?userid=amit.nagal&do=bWFpbElEPTIwMTYxMjIxMDU1OTExZXBjbXM1cDExNDZjZWU5MjEyY2MxN2ZhOGQ1YjE4YzQ5YTA4NWRlZiZyZWNpcGllbnRBZGRyZXNzPWxpbnV4QGFybWxpbnV4Lm9yZy51aw__' border=0 width=0 height=0 style='display:none'>


-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

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

end of thread, other threads:[~2016-12-21  9:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-19 10:37 [PATCH 1/1] mm: call force_sig_info before prints Maninder Singh
2016-12-19 11:07 ` Russell King - ARM Linux
     [not found] ` <CGME20161219110753epcas3p1e2a8b5ce7bd4b4e26345f28ae803d72b@epcas3p1.samsung.com>
     [not found]   ` <20161221055911epcms5p1146cee9212cc17fa8d5b18c49a085def@epcms5p1>
2016-12-21  9:21     ` Russell King - ARM Linux

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).