Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1164918 > unrolled thread
| Started by | Oleg Nesterov <oleg@redhat.com> |
|---|---|
| First post | 2015-06-14 22:10 +0200 |
| Last post | 2015-06-15 22:50 +0200 |
| Articles | 3 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: why do we need vmalloc_sync_all? Oleg Nesterov <oleg@redhat.com> - 2015-06-14 22:10 +0200
Re: why do we need vmalloc_sync_all? Ingo Molnar <mingo@kernel.org> - 2015-06-15 22:30 +0200
Re: why do we need vmalloc_sync_all? Andy Lutomirski <luto@amacapital.net> - 2015-06-15 22:50 +0200
| From | Oleg Nesterov <oleg@redhat.com> |
|---|---|
| Date | 2015-06-14 22:10 +0200 |
| Subject | Re: why do we need vmalloc_sync_all? |
| Message-ID | <pBmo9-6xN-3@gated-at.bofh.it> |
On 06/14, Ingo Molnar wrote: > > * Oleg Nesterov <oleg@redhat.com> wrote: > > > I didn't read v2 yet, but I'd like to ask a question. > > > > Why do we need vmalloc_sync_all()? > > > > It has a single caller, register_die_notifier() which calls it without > > any explanation. IMO, this needs a comment at least. > > Yes, it's used to work around crashes in modular callbacks: if the callbacks > happens to be called from within the page fault path, before the vmalloc page > fault handler runs, then we have a catch-22 problem. > > It's rare but not entirely impossible. 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. > > I am not sure I understand the changelog in 101f12af correctly, but at first > > glance vmalloc_sync_all() is no longer needed at least on x86, do_page_fault() > > no longer does notify_die(DIE_PAGE_FAULT). And btw DIE_PAGE_FAULT has no users. > > DIE_MNI too... > > > > Perhaps we can simply kill it on x86? > > So in theory we could still have it run from DIE_OOPS, and that could turn a > survivable kernel crash into a non-survivable one. I don't understand... But OK, my understanding of this magic is very limited, please forget. Thanks, Oleg. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Ingo Molnar <mingo@kernel.org> |
|---|---|
| Date | 2015-06-15 22:30 +0200 |
| Message-ID | <pBJb5-5IV-29@gated-at.bofh.it> |
| In reply to | #1164918 |
* Andy Lutomirski <luto@amacapital.net> wrote: > 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. Yes, but what I meant is that it can happen if due to an unrelated kernel bug and unlucky timing we have installed this new handler just when that other unrelated kernel bug triggers: say a #GPF crash in kernel code. In any case it should all be mooted with the removal of lazy PGD instantiation. Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Andy Lutomirski <luto@amacapital.net> |
|---|---|
| Date | 2015-06-15 22:50 +0200 |
| Message-ID | <pBJuq-65B-17@gated-at.bofh.it> |
| In reply to | #1165537 |
On Mon, Jun 15, 2015 at 1:28 PM, Ingo Molnar <mingo@kernel.org> wrote: > > * Andy Lutomirski <luto@amacapital.net> wrote: > >> 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. > > Yes, but what I meant is that it can happen if due to an unrelated kernel bug and > unlucky timing we have installed this new handler just when that other unrelated > kernel bug triggers: say a #GPF crash in kernel code. I still don't see the problem. CPU A: crash and start executing do_page_fault CPU B: register_die_notifier CPU A: notify_die now we get a vmalloc fault, fix it up, and return to do_page_fault and print the oops. > > In any case it should all be mooted with the removal of lazy PGD instantiation. Agreed. --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web