ThinkRob wrote:Other than looking for OOPS messages, is there anything else you'd like me to do when I boot the broken config?
if there's no oops then it'll be a bit tricky to find out the offending userland access. for our purposes the kernel can make two kinds of memory accesses: one which is meant to access userland (and can potentially cause all kinds of CPU exceptions since the userland address is untrusted) and the rest which is not supposed to access userland at all. UDEREF protects both kinds (on i386), the latter being the easy case where you see an oops if it triggers. now the first kind is trickier because the kernel does expect such accesses to potentially fail and has a mechanism (the extable) to handle those failures, normally that means that the function that makes the bad userland access attempt will return some error code (-EFAULT) instead of success (e.g., number of bytes copied). and then it's up to the call chain higher up to do something with the error, but usually there's no report about them. the problem is how to separate the UDEREF faults from the rest. for an experiment you could add a
dump_stack() call into arch/x86/kernel/traps.c:do_general_protection() right after the
gp_in_kernel label, just before the call to fixup_exception() and see if you get any reports from that when the i915 driver fails.