So for error handling, I'm trying to simply return the VM_FAULT_* flags from generic_page_fault see where that takes us. That's a way to avoid passing an arch specific struct around. It also allows my hack to account major faults with the hypervisor to be done outside the generic code completely (no hook). We will process generically some of the flags first such as the repeat logic or major/minor accounting of course. For that to work, I'm adding a VM_FAULT_ACCESS (that gets OR'ed with VM_FAULT_SIGSEGV) to differentiate SEGV_MAPERR and SEGV_ACCERR. So far so good. However, I noticed a small discrepancy on x86 in the handling of fatal signals: I see two path that can be hit on a fatal signal. The "obvious" one is the one in access_error() which calls no_context() with a 0 signal argument, the other path is in the retry handling, which will in this case call no_context() with SIGBUS/BUS_ADRERR. Now, the only place in there that seems to care about the signal that gets passed in is the sig_on_uaccess_error case. On one case (0 sig), that test will be skipped, on the other case (SIGBUS), that test will be done and might result in a sigbus being generated, which might override the original deadly signal (or am I missing something ?) Now I don't completely understand how the x86 vsyscall stuff works so I don't know precisely in what circumstances that test matters, I'll need you help there. Cheers, Ben. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>