[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 05/23] userfaultfd: add vm_userfaultfd_ctx to the vm
From: |
Andrea Arcangeli |
Subject: |
[Qemu-devel] [PATCH 05/23] userfaultfd: add vm_userfaultfd_ctx to the vm_area_struct |
Date: |
Thu, 14 May 2015 19:31:02 +0200 |
This adds the vm_userfaultfd_ctx to the vm_area_struct.
Signed-off-by: Andrea Arcangeli <address@hidden>
---
include/linux/mm_types.h | 11 +++++++++++
kernel/fork.c | 1 +
2 files changed, 12 insertions(+)
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 0038ac7..2836da7 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -265,6 +265,16 @@ struct vm_region {
* this region */
};
+#ifdef CONFIG_USERFAULTFD
+#define NULL_VM_UFFD_CTX ((struct vm_userfaultfd_ctx) { NULL, })
+struct vm_userfaultfd_ctx {
+ struct userfaultfd_ctx *ctx;
+};
+#else /* CONFIG_USERFAULTFD */
+#define NULL_VM_UFFD_CTX ((struct vm_userfaultfd_ctx) {})
+struct vm_userfaultfd_ctx {};
+#endif /* CONFIG_USERFAULTFD */
+
/*
* This struct defines a memory VMM memory area. There is one of these
* per VM-area/task. A VM area is any part of the process virtual memory
@@ -331,6 +341,7 @@ struct vm_area_struct {
#ifdef CONFIG_NUMA
struct mempolicy *vm_policy; /* NUMA policy for the VMA */
#endif
+ struct vm_userfaultfd_ctx vm_userfaultfd_ctx;
};
struct core_thread {
diff --git a/kernel/fork.c b/kernel/fork.c
index 1481cdd..430141b 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -451,6 +451,7 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct
*oldmm)
goto fail_nomem_anon_vma_fork;
tmp->vm_flags &= ~VM_LOCKED;
tmp->vm_next = tmp->vm_prev = NULL;
+ tmp->vm_userfaultfd_ctx = NULL_VM_UFFD_CTX;
file = tmp->vm_file;
if (file) {
struct inode *inode = file_inode(file);
- [Qemu-devel] [PATCH 00/23] userfaultfd v4, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 15/23] userfaultfd: optimize read() and poll() to be O(1), Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 05/23] userfaultfd: add vm_userfaultfd_ctx to the vm_area_struct,
Andrea Arcangeli <=
- [Qemu-devel] [PATCH 18/23] userfaultfd: buildsystem activation, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 20/23] userfaultfd: UFFDIO_COPY|UFFDIO_ZEROPAGE uAPI, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 19/23] userfaultfd: activate syscall, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 21/23] userfaultfd: mcopy_atomic|mfill_zeropage: UFFDIO_COPY|UFFDIO_ZEROPAGE preparation, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 03/23] userfaultfd: uAPI, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 17/23] userfaultfd: solve the race between UFFDIO_COPY|ZEROPAGE and read, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 06/23] userfaultfd: add VM_UFFD_MISSING and VM_UFFD_WP, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 04/23] userfaultfd: linux/userfaultfd_k.h, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 12/23] userfaultfd: Rename uffd_api.bits into .features fixup, Andrea Arcangeli, 2015/05/14
- [Qemu-devel] [PATCH 11/23] userfaultfd: Rename uffd_api.bits into .features, Andrea Arcangeli, 2015/05/14