On Sun, Nov 08, 2020 at 04:29:16AM +0000, Fenghua Yu wrote: > split_lock_detect= > #AC for split lock #DB for bus lock > > off Do nothing Do nothing > > warn Kernel OOPs Warn once per task and > Warn once per task and and continues to run. > disable future checking When both features are > supported, warn in #DB > > fatal Kernel OOPs Send SIGBUS to user > Send SIGBUS to user > When both features are > supported, fatal in #AC.
> +void handle_bus_lock(struct pt_regs *regs) > +{ > + if (!bld) > + return; > + > + pr_warn_ratelimited("#DB: %s/%d took a bus_lock trap at address: > 0x%lx\n", > + current->comm, current->pid, regs->ip); > +} So the Changelog above, and the state_show() below, seem to suggest there should be SIGBUS code in #DB, but I'm having trouble spotting it. > +static void sld_state_show(void) > +{ > + if (!bld && !sld) > + return; > + > + switch (sld_state) { > + case sld_off: > + pr_info("disabled\n"); > + break; > + > + case sld_warn: > + if (bld) > + pr_info("#DB: warning about user-space bus_locks\n"); > + else > + pr_info("#AC: crashing the kernel about kernel > split_locks and warning about user-space split_locks\n"); > + break; > + > + case sld_fatal: > + if (sld) > + pr_info("#AC: crashing the kernel on kernel split_locks > and sending SIGBUS on user-space split_locks\n"); > + else > + pr_info("#DB: sending SIGBUS on user-space > bus_locks\n"); > + break; > + } > +}