Re: mac_esp bus error handling, was Re: setjmp/longjmp?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On Tue, 19 Feb 2008, Roman Zippel wrote:

...
The only missing bit is to skip the writeback, as the fault has to be 
first fixed by the caller, so the patch below should do the trick...

It does indeed do the trick!
Thanks, Roman.

-f


bye, Roman

---
 arch/m68k/kernel/traps.c |   13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

Index: linux-2.6/arch/m68k/kernel/traps.c
===================================================================
--- linux-2.6.orig/arch/m68k/kernel/traps.c
+++ linux-2.6/arch/m68k/kernel/traps.c
@@ -477,9 +477,16 @@ static inline void access_error040(struc
 			if (fp->un.fmt7.wb3a == fp->un.fmt7.faddr)
 				fp->un.fmt7.wb3s &= ~WBV_040;
 		}
-	} else if (send_fault_sig(&fp->ptregs) > 0) {
-		printk("68040 access error, ssw=%x\n", ssw);
-		trap_c(fp);
+	} else {
+		/* In case of a bus error we either kill the process or expect
+		 * the kernel to catch the fault, which then is also responsible
+		 * for cleaning up the mess, so skip writebacks.
+		 */
+		current->thread.signo = SIGBUS;
+		current->thread.faddr = fp->un.fmt7.faddr;
+		if (send_fault_sig(&fp->ptregs) > 0)
+			printk("68040 access error, ssw=%x\n", ssw);
+		return;
 	}
 
 	do_040writebacks(fp);
-
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux