Messages in this thread | | | Date | Thu, 25 Apr 2019 09:29:17 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: [PATCH v8 10/15] x86/split_lock: Handle #AC exception for split lock |
| |
On Wed, 24 Apr 2019, Fenghua Yu wrote:
> +void handle_split_lock_kernel_mode(void)
....
> +dotraplinkage void do_alignment_check(struct pt_regs *regs, long error_code) > +{ > + unsigned int trapnr = X86_TRAP_AC; > + char str[] = "alignment check"; > + int signr = SIGBUS; > + > + RCU_LOCKDEP_WARN(!rcu_is_watching(), "entry code didn't wake RCU"); > + > + if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) == > + NOTIFY_STOP) > + return; > + > + cond_local_irq_enable(regs); > + if (!user_mode(regs) && > + static_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT)) { > + /* > + * Only split lock can generate #AC from kernel at this point. > + * Warn and disable split lock detection on this CPU. The > + * faulting instruction will be executed without generating > + * another #AC fault. > + */ > + return handle_split_lock_kernel_mode();
return fun()? For some reason gcc will not complain about that, but for the reader it's confusing at best.
Thanks,
tglx
| |