Re: [PATCH 01 of 12] Core of mmu notifiers

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Andrea Arcangeli
Date: Wednesday, April 23, 2008 - 9:37 am

On Tue, Apr 22, 2008 at 07:28:49PM -0500, Jack Steiner wrote:

This is true for KVM as well, unregister would be the most logical
action to take when the kvm device is closed and the vm
destroyed. However we can't implement mm_lock in O(N*log(N)) without
triggering RAM allocations. And the size of those ram allocations are
unknown at the time unregister runs (they also depend on the
max_nr_vmas sysctl). So on a second thought not even passing the array
from register to unregister would solve it (unless we allocate
max_nr_vmas and we block the sysctl to alter max_nr_vmas if not all
unregister run yet).That's clearly unacceptable.

The only way to avoid failing because of vmalloc space shortage or
oom, would be to provide a O(N*N) fallback. But one that can't be
interrupted by sigkill! sigkill interruption was ok in #v12 because we
didn't rely on mmu_notifier_unregister to succeed. So it avoided any
DoS but it still can't provide any reliable unregister.

So in the end unregistering with kill -9 leading to ->release in O(1)
sounds safer solution for the long term. You can't loop if unregister
fails and pretend your module not to have deadlocks.

Yes, waiting ->release add up a bit of complexity but I think it worth
it, and there weren't genial ideas on how to avoid O(N*N) complexity
and allocations too in mmu_notifier_unregister yet. Until that genius
idea will materialize we'll stick with ->release in O(1) as the only
safe unregister so we guarantee the admin will be in control of his
hardware in O(1) with kill -9 no matter if /dev/kvm and /dev/gru are
owned by sillyuser.

I'm afraid if you don't want to worst-case unregister with ->release
you need to have a better idea than my mm_lock and personally I can't
see any other way than mm_lock to ensure not to miss range_begin...

All the above is in 2.6.27 context (for 2.6.26 ->release is the way,
even if the genius idea would materialize).
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 00 of 12] mmu notifier #v13, Andrea Arcangeli, (Tue Apr 22, 6:51 am)
[PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Tue Apr 22, 6:51 am)
[PATCH 07 of 12] Add a function to rw_semaphores to check ..., Andrea Arcangeli, (Tue Apr 22, 6:51 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Eric Dumazet, (Tue Apr 22, 7:56 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Tue Apr 22, 8:15 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Avi Kivity, (Tue Apr 22, 8:24 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Eric Dumazet, (Tue Apr 22, 8:37 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Tue Apr 22, 9:46 am)
Re: [PATCH 00 of 12] mmu notifier #v13, Robin Holt, (Tue Apr 22, 11:22 am)
Re: [PATCH 00 of 12] mmu notifier #v13, Andrea Arcangeli, (Tue Apr 22, 11:43 am)
Re: [PATCH 00 of 12] mmu notifier #v13, Robin Holt, (Tue Apr 22, 12:42 pm)
Re: [PATCH 01 of 12] Core of mmu notifiers, Christoph Lameter, (Tue Apr 22, 1:19 pm)
Re: [PATCH 02 of 12] Fix ia64 compilation failure because ..., Christoph Lameter, (Tue Apr 22, 1:22 pm)
Re: [PATCH 03 of 12] get_task_mm should not succeed if mmp ..., Christoph Lameter, (Tue Apr 22, 1:23 pm)
Re: [PATCH 04 of 12] Moves all mmu notifier methods outsid ..., Christoph Lameter, (Tue Apr 22, 1:24 pm)
Re: [PATCH 05 of 12] Move the tlb flushing into free_pgtab ..., Christoph Lameter, (Tue Apr 22, 1:25 pm)
Re: [PATCH 10 of 12] Convert mm_lock to use semaphores aft ..., Christoph Lameter, (Tue Apr 22, 1:26 pm)
Re: [PATCH 00 of 12] mmu notifier #v13, Christoph Lameter, (Tue Apr 22, 1:28 pm)
Re: [PATCH 00 of 12] mmu notifier #v13, Christoph Lameter, (Tue Apr 22, 1:30 pm)
Re: [PATCH 01 of 12] Core of mmu notifiers, Robin Holt, (Tue Apr 22, 1:31 pm)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Tue Apr 22, 3:35 pm)
Re: [PATCH 02 of 12] Fix ia64 compilation failure because ..., Andrea Arcangeli, (Tue Apr 22, 3:43 pm)
Re: [PATCH 01 of 12] Core of mmu notifiers, Robin Holt, (Tue Apr 22, 4:07 pm)
Re: [PATCH 03 of 12] get_task_mm should not succeed if mmp ..., Christoph Lameter, (Tue Apr 22, 4:13 pm)
Re: [PATCH 04 of 12] Moves all mmu notifier methods outsid ..., Christoph Lameter, (Tue Apr 22, 4:14 pm)
Re: [PATCH 10 of 12] Convert mm_lock to use semaphores aft ..., Christoph Lameter, (Tue Apr 22, 4:19 pm)
Re: [PATCH 01 of 12] Core of mmu notifiers, Christoph Lameter, (Tue Apr 22, 4:20 pm)
Re: [PATCH 01 of 12] Core of mmu notifiers, Jack Steiner, (Tue Apr 22, 5:28 pm)
Re: [PATCH 00 of 12] mmu notifier #v13, Jack Steiner, (Tue Apr 22, 5:31 pm)
Re: [PATCH 00 of 12] mmu notifier #v13, Andrea Arcangeli, (Wed Apr 23, 6:33 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 6:36 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Robin Holt, (Wed Apr 23, 7:47 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 8:59 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 9:26 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 9:37 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Jack Steiner, (Wed Apr 23, 10:09 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 10:24 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 10:45 am)
Re: [PATCH 04 of 12] Moves all mmu notifier methods outsid ..., Christoph Lameter, (Wed Apr 23, 11:02 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Christoph Lameter, (Wed Apr 23, 11:09 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Christoph Lameter, (Wed Apr 23, 11:15 am)
Re: [PATCH 04 of 12] Moves all mmu notifier methods outsid ..., Andrea Arcangeli, (Wed Apr 23, 11:16 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Christoph Lameter, (Wed Apr 23, 11:19 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 11:19 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Christoph Lameter, (Wed Apr 23, 11:21 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 11:25 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Christoph Lameter, (Wed Apr 23, 11:27 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 11:34 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 11:37 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Christoph Lameter, (Wed Apr 23, 11:46 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 3:19 pm)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed Apr 23, 11:49 pm)
Re: [PATCH 01 of 12] Core of mmu notifiers, Robin Holt, (Thu Apr 24, 2:51 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Thu Apr 24, 8:39 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Thu Apr 24, 10:41 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Robin Holt, (Sat Apr 26, 6:17 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Sat Apr 26, 7:04 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Sun Apr 27, 5:27 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Christoph Lameter, (Mon Apr 28, 1:34 pm)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Mon Apr 28, 5:10 pm)
Re: [PATCH 01 of 12] Core of mmu notifiers, Christoph Lameter, (Mon Apr 28, 6:28 pm)
Re: [PATCH 01 of 12] Core of mmu notifiers, Hugh Dickins, (Tue Apr 29, 3:49 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Tue Apr 29, 6:32 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Tue Apr 29, 8:30 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Robin Holt, (Tue Apr 29, 8:50 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Tue Apr 29, 9:03 am)
Re: [PATCH 01 of 12] Core of mmu notifiers, Andrea Arcangeli, (Wed May 7, 8:00 am)