Files
linux/include/linux
Lorenzo Stoakes ab04b530e7 mm: introduce copy-on-fork VMAs and make VM_MAYBE_GUARD one
Gather all the VMA flags whose presence implies that page tables must be
copied on fork into a single bitmap - VM_COPY_ON_FORK - and use this
rather than specifying individual flags in vma_needs_copy().

We also add VM_MAYBE_GUARD to this list, as it being set on a VMA implies
that there may be metadata contained in the page tables (that is - guard
markers) which would will not and cannot be propagated upon fork.

This was already being done manually previously in vma_needs_copy(), but
this makes it very explicit, alongside VM_PFNMAP, VM_MIXEDMAP and
VM_UFFD_WP all of which imply the same.

Note that VM_STICKY flags ought generally to be marked VM_COPY_ON_FORK too
- because equally a flag being VM_STICKY indicates that the VMA contains
metadat that is not propagated by being faulted in - i.e.  that the VMA
metadata does not fully describe the VMA alone, and thus we must propagate
whatever metadata there is on a fork.

However, for maximum flexibility, we do not make this necessarily the case
here.

Link: https://lkml.kernel.org/r/5d41b24e7bc622cda0af92b6d558d7f4c0d1bc8c.1763460113.git.lorenzo.stoakes@oracle.com
Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Reviewed-by: Pedro Falcato <pfalcato@suse.de>
Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: David Hildenbrand (Red Hat) <david@kernel.org>
Cc: Andrei Vagin <avagin@gmail.com>
Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: Barry Song <baohua@kernel.org>
Cc: Dev Jain <dev.jain@arm.com>
Cc: Jann Horn <jannh@google.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Lance Yang <lance.yang@linux.dev>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Nico Pache <npache@redhat.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2025-11-20 13:43:58 -08:00
..
2025-09-24 17:09:47 +02:00
2025-06-15 21:19:08 +05:30
2025-09-05 15:06:03 +02:00
2025-02-21 17:31:45 -06:00
2025-02-21 09:54:01 +01:00
2025-07-21 18:18:51 +01:00
2025-04-21 10:27:59 +02:00
2025-04-29 15:58:38 -04:00
2025-07-31 11:28:03 -04:00
2025-09-24 02:48:05 -07:00
2025-03-08 14:37:39 +01:00
2025-05-21 13:39:45 +02:00
2025-02-06 11:27:16 -07:00
2025-08-14 10:37:33 -07:00
2025-04-11 18:58:10 -07:00
2025-09-23 11:13:22 +02:00
2025-04-17 10:56:11 +02:00
2025-02-24 12:08:51 +02:00
2025-04-10 10:39:14 +01:00
2025-08-21 13:58:07 +02:00
2025-07-16 14:28:21 +02:00
2025-05-22 11:07:05 +02:00
2025-09-13 17:32:44 -07:00
2025-08-29 13:39:53 -07:00
2025-08-02 12:06:10 -07:00
2025-09-18 10:17:09 +02:00
2025-09-23 11:13:22 +02:00
2025-06-11 11:57:14 -07:00
2025-03-08 12:13:25 +01:00
2025-07-02 17:18:01 +01:00
2025-07-17 06:01:16 -06:00
2025-02-07 23:15:01 +05:30
2025-09-13 16:54:50 -07:00
2025-11-16 17:28:26 -08:00
2025-07-09 22:41:56 -07:00
2025-09-17 15:58:29 -04:00
2025-06-17 18:18:46 -07:00
2025-03-17 13:54:50 +00:00
2025-07-14 15:20:02 -07:00
2025-09-23 13:28:20 -04:00
2025-07-08 19:11:57 -04:00
2025-09-19 14:26:16 +02:00
2025-09-25 09:23:47 +02:00
2025-02-18 11:51:22 -05:00
2025-08-18 14:23:09 +02:00
2025-08-18 14:23:09 +02:00
2025-10-01 07:55:42 -05:00
2025-10-03 12:13:12 -05:00
2025-05-21 16:46:37 +02:00
2025-09-13 16:55:07 -07:00
2025-10-03 10:24:14 -07:00
2025-06-19 14:28:24 +02:00
2025-06-19 14:28:24 +02:00
2025-03-10 08:53:40 +01:00
2025-07-22 18:07:11 +02:00
2025-03-12 20:41:14 +01:00
2025-08-24 11:41:11 -06:00
2025-07-01 12:29:29 +02:00
2025-05-03 12:02:04 +02:00
2025-05-11 17:54:09 -07:00
2025-05-06 11:11:45 -06:00
2025-03-17 11:52:25 +01:00
2025-11-16 17:28:13 -08:00
2025-08-28 13:14:50 +02:00
2025-04-10 18:34:05 -07:00
2025-09-19 17:19:45 -07:00
2025-07-23 11:56:02 +02:00
2025-02-28 11:51:26 -08:00
2025-08-17 12:46:25 +02:00
2025-03-20 08:00:50 -07:00
2025-06-26 09:44:45 -07:00
2025-02-12 12:12:27 +01:00
2025-09-09 10:27:01 -06:00
2025-10-01 07:24:55 -04:00
2025-07-17 11:26:56 +02:00
2025-08-02 12:01:37 -07:00
2025-03-13 13:25:58 -07:00
2025-03-13 13:25:58 -07:00
2025-03-13 13:25:58 -07:00