Messages in this thread | | | From | Andy Lutomirski <> | Date | Sun, 14 Jun 2015 19:57:46 -0700 | Subject | Re: why do we need vmalloc_sync_all? |
| |
On Sun, Jun 14, 2015 at 7:47 PM, Andi Kleen <andi@firstfloor.org> wrote: > Oleg Nesterov <oleg@redhat.com> writes: >> >> But again, the kernel no longer does this? do_page_fault() does vmalloc_fault() >> without notify_die(). If it fails, I do not see how/why a modular DIE_OOPS >> handler could try to resolve this problem and trigger another fault. > > The same problem can happen from NMI handlers or machine check > handlers. It's not necessarily tied to page faults only.
AIUI, the point of the one and only vmalloc_sync_all call is to prevent infinitely recursive faults when we call a notify_die callback. The only thing that it could realistically protect is module text or static non-per-cpu module data, since that's the only thing that's reliably already in the init pgd. I'm with Oleg: I don't see how that can happen, since do_page_fault fixes up vmalloc faults before it calls notify_die.
--Andy
| |