The only sensible place for the !(mmusr & MMU_I) test is inside the (mmusr & (MMU_I | MMU_WP)) branch. It is redundant when used in the else branch.
Moreover, when used in the else branch it defeats the remaining conditionals. Hence the (mmusr & (MMU_B|MMU_L|MMU_S)) branch is unreachable, along with the final else branch. Make the dead code live again. I mentioned this dead code some time ago. It's still only a theoretical bug, but maybe it's possible to evade a signal in the (ssw & RM) case? --- See also http://lkml.kernel.org/r/alpine.LNX.2.00.1402211323140.7194@nippy.intranet Does anyone have test cases for these exceptions? diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c index c1cc4e99aa94..506e5500fa44 100644 --- a/arch/m68k/kernel/traps.c +++ b/arch/m68k/kernel/traps.c @@ -561,9 +561,9 @@ static inline void bus_error030 (struct frame *fp) handled. */ if (do_page_fault (&fp->ptregs, addr, errorcode) < 0) return; - } else if (!(mmusr & MMU_I)) { /* probably a 020 cas fault */ - if (!(ssw & RM) && send_fault_sig(&fp->ptregs) > 0) + if (!(mmusr & MMU_I) && !(ssw & RM) && + send_fault_sig(&fp->ptregs) > 0) pr_err("unexpected bus error (%#x,%#x)\n", ssw, mmusr); } else if (mmusr & (MMU_B|MMU_L|MMU_S)) { -- To unsubscribe from this list: send the line "unsubscribe linux-m68k" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html