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 [EMAIL PROTECTED]
> 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 [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to