On Tue, Mar 21, 2017 at 04:14:46PM +0100, Peter Zijlstra wrote: > > to WARN, they should probably be renamed to describe their new purpose, > > like: > > > > "report_bug" -> "report_bug_or_warning" > > "fixup_bug" -> "fixup_bug_or_warning" > > > > On a related note, if warn and bug are going to continue to use two > > separate ud instructions for the foreseeable future, report_bug() could > > be cleaned up a bit: e.g., for a ud0 instruction, it doesn't make sense > > to call find_bug(). > > I'm sure you'll break $random arch if you go futz with that. Also, I > think you mean UD2, since that's BUG. We actually need the bug_entry for > WARNs (aka UD0). > > Also, you're now optimizing the BUG() code; I don't think anybody cares > about saving a few cycles there. It shouldn't happen in the first place.
My thinking was to make report_bug() a little less obtuse, but yeah, that would break other arches, so never mind... > > > +static int fixup_bug(struct pt_regs *regs, int trapnr) > > > +{ > > > + if (trapnr != X86_TRAP_UD) > > > + return 0; > > > + > > > + switch (report_bug(regs->ip, regs)) { > > > + case BUG_TRAP_TYPE_NONE: > > > + case BUG_TRAP_TYPE_BUG: > > > + break; > > > + > > > + case BUG_TRAP_TYPE_WARN: > > > + regs->ip += 2; > > > + return 1; > > > > For self-documentation purposes, maybe use a define for the length of > > the ud0 instruction? > > Well, UD0 and UD2 really. LENGTH_UD0_OR_UD2 is a bit of a fail, name > wise. Why UD2? Warnings are UD0-only, no? What about UD0_LEN? Or at least a comment would be helpful I think. -- Josh