Messages in this thread | | | From | Andy Lutomirski <> | Date | Wed, 19 Nov 2014 15:49:29 -0800 | Subject | Re: [PATCH v3 3/3] sched, x86: Check that we're on the right stack in schedule and __might_sleep |
| |
On Wed, Nov 19, 2014 at 3:23 PM, Linus Torvalds <torvalds@linux-foundation.org> wrote: > On Wed, Nov 19, 2014 at 3:04 PM, Andy Lutomirski <luto@amacapital.net> wrote: >> >> Does that include nmi? I'm a bit afraid of touching that code. > > NMI is kind of special, since it's really not supposed to touch > 'current' or anything like that, and that's how we do preempt-count > (and that's where irq-count is) right now. > > I would prefer to have preempt_count be a percpu variable rather than > a per-thread one, but there are historical reasons for that horror. Oh > well. > >> It's certainly easy enough to bump irq_count in the paranoid entries. > > It definitely shouldn't be done from the assembly code. Usually it's > "irq_enter/exit()" that does it, but for NMI you'd presumably just do > it explicitly from do_nmi() or similar. But NMI really is nastier than > other cases, see above.
My only real objection is that it's going to be ugly and error prone. It'll have to be something like:
if (!user_mode_vm(regs)) irq_enter();
...
if (!user_mode_vm(regs)) irq_exit();
because the whole point of this series is to make the IST entries not be atomic when they come from userspace. We can wrap this in an inline cond_ist_enter/cond_ist_exit or whatever, but still, blech.
Tony already sent the follow-up patch that will make do_machine_check enable interrupts if it came from userspace.
--Andy
> > (That said, I thought we did it anyway, but now that I look I can't > find it. So I was probably just smoking something) > > Linus
-- Andy Lutomirski AMA Capital Management, LLC
| |