Suren Baghdasaryan 0d2ebf9c3f mm/mmap: free vm_area_struct without call_rcu in exit_mmap
call_rcu() can take a long time when callback offloading is enabled.  Its
use in the vm_area_free can cause regressions in the exit path when
multiple VMAs are being freed.

Because exit_mmap() is called only after the last mm user drops its
refcount, the page fault handlers can't be racing with it.  Any other
possible user like oom-reaper or process_mrelease are already synchronized
using mmap_lock.  Therefore exit_mmap() can free VMAs directly, without
the use of call_rcu().

Expose __vm_area_free() and use it from exit_mmap() to avoid possible
call_rcu() floods and performance regressions caused by it.

Link: https://lkml.kernel.org/r/20230227173632.3292573-33-surenb@google.com
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2023-04-05 20:03:02 -07:00
..
2023-04-05 19:42:41 -07:00
2023-01-18 17:12:57 -08:00
2023-03-28 16:20:14 -07:00
2023-04-05 20:02:56 -07:00
2023-03-28 16:20:08 -07:00
2023-04-05 20:03:01 -07:00
2022-10-03 14:02:43 -07:00
2022-09-26 19:46:09 -07:00
2023-04-05 19:42:46 -07:00
2023-04-05 19:42:46 -07:00
2023-04-05 20:03:01 -07:00
2023-01-18 17:12:57 -08:00
2022-12-11 18:12:10 -08:00
2022-12-11 18:12:10 -08:00