Messages in this thread | | | Date | Mon, 9 Nov 2020 09:29:58 +0100 | From | Peter Zijlstra <> | Subject | Re: [PATCH 2/4] x86/bus_lock: Handle warn and fatal in #DB for bus lock |
| |
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; > + } > +}
| |