From: Andrew Morton <akpm@linux-foundation.org>
To: aarcange@redhat.com, bgeffon@google.com, bobbypowers@gmail.com,
cracauer@cons.org, david@redhat.com, dgilbert@redhat.com,
dplotnikov@virtuozzo.com, gokhale2@llnl.gov, hannes@cmpxchg.org,
hughd@google.com, jglisse@redhat.com, kirill@shutemov.name,
mcfadden8@llnl.gov, mgorman@suse.de, mike.kravetz@oracle.com,
mm-commits@vger.kernel.org, peterx@redhat.com, riel@redhat.com,
rppt@linux.vnet.ibm.com, shli@fb.com, xemul@parallels.com,
xemul@virtuozzo.com
Subject: + userfaultfd-wp-apply-_page_uffd_wp-bit.patch added to -mm tree
Date: Mon, 09 Mar 2020 20:41:35 -0700 [thread overview]
Message-ID: <20200310034135.nOLpeXwrX%akpm@linux-foundation.org> (raw)
In-Reply-To: <20200305222751.6d781a3f2802d79510941e4e@linux-foundation.org>
The patch titled
Subject: userfaultfd: wp: apply _PAGE_UFFD_WP bit
has been added to the -mm tree. Its filename is
userfaultfd-wp-apply-_page_uffd_wp-bit.patch
This patch should soon appear at
http://ozlabs.org/~akpm/mmots/broken-out/userfaultfd-wp-apply-_page_uffd_wp-bit.patch
and later at
http://ozlabs.org/~akpm/mmotm/broken-out/userfaultfd-wp-apply-_page_uffd_wp-bit.patch
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next and is updated
there every 3-4 working days
------------------------------------------------------
From: Peter Xu <peterx@redhat.com>
Subject: userfaultfd: wp: apply _PAGE_UFFD_WP bit
Firstly, introduce two new flags MM_CP_UFFD_WP[_RESOLVE] for
change_protection() when used with uffd-wp and make sure the two new flags
are exclusively used. Then,
- For MM_CP_UFFD_WP: apply the _PAGE_UFFD_WP bit and remove _PAGE_RW
when a range of memory is write protected by uffd
- For MM_CP_UFFD_WP_RESOLVE: remove the _PAGE_UFFD_WP bit and recover
_PAGE_RW when write protection is resolved from userspace
And use this new interface in mwriteprotect_range() to replace the old
MM_CP_DIRTY_ACCT.
Do this change for both PTEs and huge PMDs. Then we can start to identify
which PTE/PMD is write protected by general (e.g., COW or soft dirty
tracking), and which is for userfaultfd-wp.
Since we should keep the _PAGE_UFFD_WP when doing pte_modify(), add it
into _PAGE_CHG_MASK as well. Meanwhile, since we have this new bit, we
can be even more strict when detecting uffd-wp page faults in either
do_wp_page() or wp_huge_pmd().
After we're with _PAGE_UFFD_WP, a special case is when a page is both
protected by the general COW logic and also userfault-wp. Here the
userfault-wp will have higher priority and will be handled first. Only
after the uffd-wp bit is cleared on the PTE/PMD will we continue to handle
the general COW. These are the steps on what will happen with such a
page:
1. CPU accesses write protected shared page (so both protected by
general COW and uffd-wp), blocked by uffd-wp first because in
do_wp_page we'll handle uffd-wp first, so it has higher priority
than general COW.
2. Uffd service thread receives the request, do UFFDIO_WRITEPROTECT
to remove the uffd-wp bit upon the PTE/PMD. However here we
still keep the write bit cleared. Notify the blocked CPU.
3. The blocked CPU resumes the page fault process with a fault
retry, during retry it'll notice it was not with the uffd-wp bit
this time but it is still write protected by general COW, then
it'll go though the COW path in the fault handler, copy the page,
apply write bit where necessary, and retry again.
4. The CPU will be able to access this page with write bit set.
Link: http://lkml.kernel.org/r/20200220163112.11409-8-peterx@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
Suggested-by: Andrea Arcangeli <aarcange@redhat.com>
Cc: Brian Geffon <bgeffon@google.com>
Cc: Pavel Emelyanov <xemul@virtuozzo.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Martin Cracauer <cracauer@cons.org>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Bobby Powers <bobbypowers@gmail.com>
Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
Cc: "Kirill A . Shutemov" <kirill@shutemov.name>
Cc: Maya Gokhale <gokhale2@llnl.gov>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Marty McFadden <mcfadden8@llnl.gov>
Cc: Denis Plotnikov <dplotnikov@virtuozzo.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: "Dr . David Alan Gilbert" <dgilbert@redhat.com>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Shaohua Li <shli@fb.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
include/linux/mm.h | 5 +++++
mm/huge_memory.c | 18 +++++++++++++++++-
mm/memory.c | 4 ++--
mm/mprotect.c | 17 +++++++++++++++++
mm/userfaultfd.c | 8 ++++++--
5 files changed, 47 insertions(+), 5 deletions(-)
--- a/include/linux/mm.h~userfaultfd-wp-apply-_page_uffd_wp-bit
+++ a/include/linux/mm.h
@@ -1781,6 +1781,11 @@ extern unsigned long move_page_tables(st
#define MM_CP_DIRTY_ACCT (1UL << 0)
/* Whether this protection change is for NUMA hints */
#define MM_CP_PROT_NUMA (1UL << 1)
+/* Whether this change is for write protecting */
+#define MM_CP_UFFD_WP (1UL << 2) /* do wp */
+#define MM_CP_UFFD_WP_RESOLVE (1UL << 3) /* Resolve wp */
+#define MM_CP_UFFD_WP_ALL (MM_CP_UFFD_WP | \
+ MM_CP_UFFD_WP_RESOLVE)
extern unsigned long change_protection(struct vm_area_struct *vma, unsigned long start,
unsigned long end, pgprot_t newprot,
--- a/mm/huge_memory.c~userfaultfd-wp-apply-_page_uffd_wp-bit
+++ a/mm/huge_memory.c
@@ -1961,6 +1961,8 @@ int change_huge_pmd(struct vm_area_struc
bool preserve_write;
int ret;
bool prot_numa = cp_flags & MM_CP_PROT_NUMA;
+ bool uffd_wp = cp_flags & MM_CP_UFFD_WP;
+ bool uffd_wp_resolve = cp_flags & MM_CP_UFFD_WP_RESOLVE;
ptl = __pmd_trans_huge_lock(pmd, vma);
if (!ptl)
@@ -2027,6 +2029,17 @@ int change_huge_pmd(struct vm_area_struc
entry = pmd_modify(entry, newprot);
if (preserve_write)
entry = pmd_mk_savedwrite(entry);
+ if (uffd_wp) {
+ entry = pmd_wrprotect(entry);
+ entry = pmd_mkuffd_wp(entry);
+ } else if (uffd_wp_resolve) {
+ /*
+ * Leave the write bit to be handled by PF interrupt
+ * handler, then things like COW could be properly
+ * handled.
+ */
+ entry = pmd_clear_uffd_wp(entry);
+ }
ret = HPAGE_PMD_NR;
set_pmd_at(mm, addr, pmd, entry);
BUG_ON(vma_is_anonymous(vma) && !preserve_write && pmd_write(entry));
@@ -2175,7 +2188,7 @@ static void __split_huge_pmd_locked(stru
struct page *page;
pgtable_t pgtable;
pmd_t old_pmd, _pmd;
- bool young, write, soft_dirty, pmd_migration = false;
+ bool young, write, soft_dirty, pmd_migration = false, uffd_wp = false;
unsigned long addr;
int i;
@@ -2257,6 +2270,7 @@ static void __split_huge_pmd_locked(stru
write = pmd_write(old_pmd);
young = pmd_young(old_pmd);
soft_dirty = pmd_soft_dirty(old_pmd);
+ uffd_wp = pmd_uffd_wp(old_pmd);
}
VM_BUG_ON_PAGE(!page_count(page), page);
page_ref_add(page, HPAGE_PMD_NR - 1);
@@ -2290,6 +2304,8 @@ static void __split_huge_pmd_locked(stru
entry = pte_mkold(entry);
if (soft_dirty)
entry = pte_mksoft_dirty(entry);
+ if (uffd_wp)
+ entry = pte_mkuffd_wp(entry);
}
pte = pte_offset_map(&_pmd, addr);
BUG_ON(!pte_none(*pte));
--- a/mm/memory.c~userfaultfd-wp-apply-_page_uffd_wp-bit
+++ a/mm/memory.c
@@ -2752,7 +2752,7 @@ static vm_fault_t do_wp_page(struct vm_f
{
struct vm_area_struct *vma = vmf->vma;
- if (userfaultfd_wp(vma)) {
+ if (userfaultfd_pte_wp(vma, *vmf->pte)) {
pte_unmap_unlock(vmf->pte, vmf->ptl);
return handle_userfault(vmf, VM_UFFD_WP);
}
@@ -3955,7 +3955,7 @@ static inline vm_fault_t create_huge_pmd
static inline vm_fault_t wp_huge_pmd(struct vm_fault *vmf, pmd_t orig_pmd)
{
if (vma_is_anonymous(vmf->vma)) {
- if (userfaultfd_wp(vmf->vma))
+ if (userfaultfd_huge_pmd_wp(vmf->vma, orig_pmd))
return handle_userfault(vmf, VM_UFFD_WP);
return do_huge_pmd_wp_page(vmf, orig_pmd);
}
--- a/mm/mprotect.c~userfaultfd-wp-apply-_page_uffd_wp-bit
+++ a/mm/mprotect.c
@@ -45,6 +45,8 @@ static unsigned long change_pte_range(st
int target_node = NUMA_NO_NODE;
bool dirty_accountable = cp_flags & MM_CP_DIRTY_ACCT;
bool prot_numa = cp_flags & MM_CP_PROT_NUMA;
+ bool uffd_wp = cp_flags & MM_CP_UFFD_WP;
+ bool uffd_wp_resolve = cp_flags & MM_CP_UFFD_WP_RESOLVE;
/*
* Can be called with only the mmap_sem for reading by
@@ -116,6 +118,19 @@ static unsigned long change_pte_range(st
if (preserve_write)
ptent = pte_mk_savedwrite(ptent);
+ if (uffd_wp) {
+ ptent = pte_wrprotect(ptent);
+ ptent = pte_mkuffd_wp(ptent);
+ } else if (uffd_wp_resolve) {
+ /*
+ * Leave the write bit to be handled
+ * by PF interrupt handler, then
+ * things like COW could be properly
+ * handled.
+ */
+ ptent = pte_clear_uffd_wp(ptent);
+ }
+
/* Avoid taking write faults for known dirty pages */
if (dirty_accountable && pte_dirty(ptent) &&
(pte_soft_dirty(ptent) ||
@@ -336,6 +351,8 @@ unsigned long change_protection(struct v
{
unsigned long pages;
+ BUG_ON((cp_flags & MM_CP_UFFD_WP_ALL) == MM_CP_UFFD_WP_ALL);
+
if (is_vm_hugetlb_page(vma))
pages = hugetlb_change_protection(vma, start, end, newprot);
else
--- a/mm/userfaultfd.c~userfaultfd-wp-apply-_page_uffd_wp-bit
+++ a/mm/userfaultfd.c
@@ -101,8 +101,12 @@ static int mcopy_atomic_pte(struct mm_st
goto out_release;
_dst_pte = pte_mkdirty(mk_pte(page, dst_vma->vm_page_prot));
- if ((dst_vma->vm_flags & VM_WRITE) && !wp_copy)
- _dst_pte = pte_mkwrite(_dst_pte);
+ if (dst_vma->vm_flags & VM_WRITE) {
+ if (wp_copy)
+ _dst_pte = pte_mkuffd_wp(_dst_pte);
+ else
+ _dst_pte = pte_mkwrite(_dst_pte);
+ }
dst_pte = pte_offset_map_lock(dst_mm, dst_pmd, dst_addr, &ptl);
if (dst_vma->vm_file) {
_
Patches currently in -mm which might be from peterx@redhat.com are
mm-gup-rename-nonblocking-to-locked-where-proper.patch
mm-gup-fix-__get_user_pages-on-fault-retry-of-hugetlb.patch
mm-introduce-fault_signal_pending.patch
x86-mm-use-helper-fault_signal_pending.patch
arc-mm-use-helper-fault_signal_pending.patch
arm64-mm-use-helper-fault_signal_pending.patch
powerpc-mm-use-helper-fault_signal_pending.patch
sh-mm-use-helper-fault_signal_pending.patch
mm-return-faster-for-non-fatal-signals-in-user-mode-faults.patch
userfaultfd-dont-retake-mmap_sem-to-emulate-nopage.patch
mm-introduce-fault_flag_default.patch
mm-introduce-fault_flag_interruptible.patch
mm-allow-vm_fault_retry-for-multiple-times.patch
mm-gup-allow-vm_fault_retry-for-multiple-times.patch
mm-gup-allow-to-react-to-fatal-signals.patch
mm-userfaultfd-honor-fault_flag_killable-in-fault-path.patch
mm-merge-parameters-for-change_protection.patch
userfaultfd-wp-apply-_page_uffd_wp-bit.patch
userfaultfd-wp-drop-_page_uffd_wp-properly-when-fork.patch
userfaultfd-wp-add-pmd_swp_uffd_wp-helpers.patch
userfaultfd-wp-support-swap-and-page-migration.patch
khugepaged-skip-collapse-if-uffd-wp-detected.patch
userfaultfd-wp-dont-wake-up-when-doing-write-protect.patch
userfaultfd-wp-declare-_uffdio_writeprotect-conditionally.patch
userfaultfd-selftests-refactor-statistics.patch
userfaultfd-selftests-add-write-protect-test.patch
next prev parent reply other threads:[~2020-03-10 3:41 UTC|newest]
Thread overview: 200+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-06 6:27 incoming Andrew Morton
2020-03-06 6:28 ` [patch 1/7] mm, numa: fix bad pmd by atomically check for pmd_trans_huge when marking page tables prot_numa Andrew Morton
2020-03-06 6:28 ` [patch 2/7] mm: fix possible PMD dirty bit lost in set_pmd_migration_entry() Andrew Morton
2020-03-06 6:28 ` [patch 3/7] mm: avoid data corruption on CoW fault into PFN-mapped VMA Andrew Morton
2020-03-06 6:28 ` [patch 4/7] fat: fix uninit-memory access for partial initialized inode Andrew Morton
2020-03-06 6:28 ` [patch 5/7] mm/z3fold.c: do not include rwlock.h directly Andrew Morton
2020-03-06 6:28 ` [patch 6/7] mm, hotplug: fix page online with DEBUG_PAGEALLOC compiled but not enabled Andrew Morton
2020-03-06 6:28 ` [patch 7/7] arch/Kconfig: update HAVE_RELIABLE_STACKTRACE description Andrew Morton
2020-03-07 20:49 ` + proc-speed-up-proc-statm.patch added to -mm tree Andrew Morton
2020-03-07 20:58 ` + mm-hotplug-fix-hot-remove-failure-in-sparsememvmemmap-case.patch " Andrew Morton
2020-03-07 21:01 ` + mm-use-fallthrough.patch " Andrew Morton
2020-03-07 21:53 ` + mm-gup-track-foll_pin-pages-fix.patch " Andrew Morton
2020-03-07 22:10 ` + mm-shmem-add-vmstat-for-hugepage-fallback.patch " Andrew Morton
2020-03-07 22:10 ` + mm-thp-track-fallbacks-due-to-failed-memcg-charges-separately.patch " Andrew Morton
2020-03-07 22:39 ` + mmpage_alloccma-conditionally-prefer-cma-pageblocks-for-movable-allocations.patch " Andrew Morton
2020-03-07 23:04 ` + mm-memory_hotplug-drop-the-flags-field-from-struct-mhp_restrictions.patch " Andrew Morton
2020-03-07 23:04 ` + mm-memory_hotplug-rename-mhp_restrictions-to-mhp_params.patch " Andrew Morton
2020-03-07 23:04 ` + x86-mm-thread-pgprot_t-through-init_memory_mapping.patch " Andrew Morton
2020-03-07 23:04 ` + x86-mm-introduce-__set_memory_prot.patch " Andrew Morton
2020-03-07 23:04 ` + powerpc-mm-thread-pgprot_t-through-create_section_mapping.patch " Andrew Morton
2020-03-07 23:04 ` + mm-memory_hotplug-add-pgprot_t-to-mhp_params.patch " Andrew Morton
2020-03-07 23:05 ` + mm-memremap-set-caching-mode-for-pci-p2pdma-memory-to-wc.patch " Andrew Morton
2020-03-07 23:11 ` + kasan-detect-negative-size-in-memory-operation-function-fix.patch " Andrew Morton
2020-03-07 23:25 ` + mm-gup-track-foll_pin-pages-fix-2.patch " Andrew Morton
[not found] ` <202efdc4-2b19-278b-9960-3afb18b8173d@nvidia.com>
[not found] ` <20200311111352.1dff2984@p-imbrenda>
2020-03-12 0:51 ` Andrew Morton
2020-03-07 23:25 ` + mm-gup-writeback-add-callbacks-for-inaccessible-pages.patch " Andrew Morton
2020-03-07 23:33 ` + mm-sparsemem-use-wrapped-macros-instead-of-open-coding.patch " Andrew Morton
2020-03-09 23:34 ` + checkpatch-check-proper-licensing-of-devicetree-bindings.patch " Andrew Morton
2020-03-09 23:37 ` + kcov-cleanup-debug-messages.patch " Andrew Morton
2020-03-09 23:37 ` + kcov-collect-coverage-from-interrupts.patch " Andrew Morton
2020-03-09 23:37 ` + usb-core-kcov-collect-coverage-from-usb-complete-callback.patch " Andrew Morton
2020-03-10 0:49 ` + mm-swap_slotsc-dont-reset-the-cache-slot-after-use.patch " Andrew Morton
2020-03-10 0:51 ` + mm-hotplug-fix-hot-remove-failure-in-sparsememvmemmap-case-fix.patch " Andrew Morton
2020-03-10 0:57 ` + linux-bitsh-add-compile-time-sanity-check-of-genmask-inputs.patch " Andrew Morton
2020-03-10 2:29 ` + mm-page_alloc-use-free_area_empty-instead-of-open-coding.patch " Andrew Morton
2020-03-10 2:50 ` + mm-special-create-generic-fallbacks-for-pte_special-and-pte_mkspecial.patch " Andrew Morton
2020-03-10 2:53 ` + ocfs2-cluster-replace-zero-length-array-with-flexible-array-member.patch " Andrew Morton
2020-03-10 2:54 ` + ocfs2-dlm-replace-zero-length-array-with-flexible-array-member.patch " Andrew Morton
2020-03-10 2:54 ` + ocfs2-ocfs2_fsh-replace-zero-length-array-with-flexible-array-member.patch " Andrew Morton
2020-03-10 2:56 ` + mm-page_allocc-micro-optimisation-remove-unnecessary-branch.patch " Andrew Morton
2020-03-10 3:38 ` + mm-gup-rename-nonblocking-to-locked-where-proper.patch " Andrew Morton
2020-03-10 3:38 ` + mm-gup-fix-__get_user_pages-on-fault-retry-of-hugetlb.patch " Andrew Morton
2020-03-10 3:38 ` + mm-introduce-fault_signal_pending.patch " Andrew Morton
2020-03-10 3:38 ` + x86-mm-use-helper-fault_signal_pending.patch " Andrew Morton
2020-03-10 3:38 ` + arc-mm-use-helper-fault_signal_pending.patch " Andrew Morton
2020-03-10 3:38 ` + arm64-mm-use-helper-fault_signal_pending.patch " Andrew Morton
2020-03-10 3:38 ` + powerpc-mm-use-helper-fault_signal_pending.patch " Andrew Morton
2020-03-10 3:38 ` + sh-mm-use-helper-fault_signal_pending.patch " Andrew Morton
2020-03-10 3:38 ` + mm-return-faster-for-non-fatal-signals-in-user-mode-faults.patch " Andrew Morton
2020-03-10 3:38 ` + userfaultfd-dont-retake-mmap_sem-to-emulate-nopage.patch " Andrew Morton
2020-03-10 3:38 ` + mm-introduce-fault_flag_default.patch " Andrew Morton
2020-03-10 3:39 ` + mm-introduce-fault_flag_interruptible.patch " Andrew Morton
2020-03-10 3:39 ` + mm-allow-vm_fault_retry-for-multiple-times.patch " Andrew Morton
2020-03-10 3:39 ` + mm-gup-allow-vm_fault_retry-for-multiple-times.patch " Andrew Morton
2020-03-10 3:39 ` + mm-gup-allow-to-react-to-fatal-signals.patch " Andrew Morton
2020-03-10 3:39 ` + mm-userfaultfd-honor-fault_flag_killable-in-fault-path.patch " Andrew Morton
2020-03-10 3:41 ` + userfaultfd-wp-add-helper-for-writeprotect-check.patch " Andrew Morton
2020-03-10 3:41 ` + userfaultfd-wp-hook-userfault-handler-to-write-protection-fault.patch " Andrew Morton
2020-03-10 3:41 ` + userfaultfd-wp-add-wp-pagetable-tracking-to-x86.patch " Andrew Morton
2020-03-10 3:41 ` + userfaultfd-wp-userfaultfd_pte-huge_pmd_wp-helpers.patch " Andrew Morton
2020-03-10 3:41 ` + userfaultfd-wp-add-uffdio_copy_mode_wp.patch " Andrew Morton
2020-03-10 3:41 ` + mm-merge-parameters-for-change_protection.patch " Andrew Morton
2020-03-10 3:41 ` Andrew Morton [this message]
2020-03-10 3:41 ` + userfaultfd-wp-drop-_page_uffd_wp-properly-when-fork.patch " Andrew Morton
2020-03-10 3:41 ` + userfaultfd-wp-add-pmd_swp_uffd_wp-helpers.patch " Andrew Morton
2020-03-10 3:41 ` + userfaultfd-wp-support-swap-and-page-migration.patch " Andrew Morton
2020-03-10 3:41 ` + khugepaged-skip-collapse-if-uffd-wp-detected.patch " Andrew Morton
2020-03-10 3:41 ` + userfaultfd-wp-support-write-protection-for-userfault-vma-range.patch " Andrew Morton
2020-03-10 3:41 ` + userfaultfd-wp-add-the-writeprotect-api-to-userfaultfd-ioctl.patch " Andrew Morton
2020-03-10 3:41 ` + userfaultfd-wp-enabled-write-protection-in-userfaultfd-api.patch " Andrew Morton
2020-03-10 3:42 ` + userfaultfd-wp-dont-wake-up-when-doing-write-protect.patch " Andrew Morton
2020-03-10 3:42 ` + userfaultfd-wp-uffdio_register_mode_wp-documentation-update.patch " Andrew Morton
2020-03-10 3:42 ` + userfaultfd-wp-declare-_uffdio_writeprotect-conditionally.patch " Andrew Morton
2020-03-10 3:42 ` + userfaultfd-selftests-refactor-statistics.patch " Andrew Morton
2020-03-10 3:42 ` + userfaultfd-selftests-add-write-protect-test.patch " Andrew Morton
2020-03-10 23:59 ` + kmod-make-request_module-return-an-error-when-autoloading-is-disabled.patch " Andrew Morton
2020-03-11 0:19 ` + mm-filemapc-remove-unused-argument-from-shrink_readahead_size_eio.patch " Andrew Morton
2020-03-11 22:08 ` + mm-hugetlb-remove-unnecessary-memory-fetch-in-pageheadhuge.patch " Andrew Morton
2020-03-11 22:10 ` + fs_parse-remove-pr_notice-about-each-validation.patch " Andrew Morton
2020-03-11 23:26 ` + mmpage_alloccma-conditionally-prefer-cma-pageblocks-for-movable-allocations-fix.patch " Andrew Morton
2020-03-11 23:29 ` + mm-hugetlb-optionally-allocate-gigantic-hugepages-using-cma.patch " Andrew Morton
2020-03-11 23:33 ` + virtio-balloon-switch-back-to-oom-handler-for-virtio_balloon_f_deflate_on_oom.patch " Andrew Morton
2020-03-11 23:38 ` + kasan-fix-wstringop-overflow-warning.patch " Andrew Morton
2020-03-11 23:42 ` + mm-fix-tick-timer-stall-during-deferred-page-init.patch " Andrew Morton
2020-03-12 0:00 ` + drivers-base-memory-map-mmop_offline-to-0.patch " Andrew Morton
2020-03-12 0:00 ` + drivers-base-memory-store-mapping-between-mmop_-and-string-in-an-array.patch " Andrew Morton
2020-03-12 0:00 ` + mm-memory_hotplug-convert-memhp_auto_online-to-store-an-online_type.patch " Andrew Morton
2020-03-12 0:00 ` + mm-memory_hotplug-allow-to-specify-a-default-online_type.patch " Andrew Morton
2020-03-12 0:18 ` + mm-debug-add-tests-validating-architecture-page-table-helpers.patch " Andrew Morton
2020-03-12 0:25 ` + mm-swap_slotsc-assignreset-cache-slot-by-value-directly.patch " Andrew Morton
2020-03-12 0:25 ` [alternative-merged] mm-swap_slotsc-dont-reset-the-cache-slot-after-use.patch removed from " Andrew Morton
2020-03-12 0:33 ` + mm-introduce-fault_signal_pending-fix.patch added to " Andrew Morton
2020-03-12 0:34 ` [failures] mm-sparsemem-use-wrapped-macros-instead-of-open-coding.patch removed from " Andrew Morton
2020-03-12 1:04 ` + kasan-detect-negative-size-in-memory-operation-function-fix-2.patch added to " Andrew Morton
2020-03-12 1:08 ` + page-flags-fix-a-crash-at-setpageerrorthp_swap.patch " Andrew Morton
2020-03-12 1:11 ` + mm-page_alloc-simplify-page_is_buddy-for-better-code-readability.patch " Andrew Morton
2020-03-12 1:17 ` + mm-special-create-generic-fallbacks-for-pte_special-and-pte_mkspecial-v3.patch " Andrew Morton
2020-03-12 2:40 ` + memcg-fix-null-pointer-dereference-in-__mem_cgroup_usage_unregister_event-fix.patch " Andrew Morton
2020-03-12 2:58 ` + list-prevent-compiler-reloads-inside-safe-list-iteration.patch " Andrew Morton
2020-03-12 3:14 ` + mm-clarify-a-confusing-comment-of-remap_pfn_range.patch " Andrew Morton
2020-03-12 4:12 ` mmotm 2020-03-11-21-11 uploaded Andrew Morton
2020-03-12 22:29 ` + fs-filesystemsc-downgrade-user-reachable-warn_once-to-pr_warn_once.patch added to -mm tree Andrew Morton
2020-03-12 22:29 ` + docs-admin-guide-document-the-kernelmodprobe-sysctl.patch " Andrew Morton
2020-03-12 22:29 ` + selftests-kmod-test-disabling-module-autoloading.patch " Andrew Morton
2020-03-12 22:35 ` + mm-memcg-fix-corruption-on-64-bit-divisor-in-memoryhigh-throttling.patch " Andrew Morton
2020-03-12 22:35 ` + mm-memcg-throttle-allocators-based-on-ancestral-memoryhigh.patch " Andrew Morton
2020-03-12 22:44 ` + mm-memcg-prevent-memoryhigh-load-store-tearing.patch " Andrew Morton
2020-03-12 22:45 ` + mm-memcg-prevent-memorymax-load-tearing.patch " Andrew Morton
2020-03-12 22:45 ` + mm-memcg-prevent-memorylow-load-store-tearing.patch " Andrew Morton
2020-03-12 22:45 ` + mm-memcg-prevent-memorymin-load-store-tearing.patch " Andrew Morton
2020-03-12 22:45 ` + mm-memcg-prevent-memoryswapmax-load-tearing.patch " Andrew Morton
2020-03-12 22:45 ` + mm-memcg-prevent-mem_cgroup_protected-store-tearing.patch " Andrew Morton
2020-03-12 22:46 ` + mm-memcg-bypass-high-reclaim-iteration-for-cgroup-hierarchy-root.patch " Andrew Morton
2020-03-12 22:47 ` [failures] hugetlbfs-use-i_mmap_rwsem-for-more-pmd-sharing-synchronization.patch removed from " Andrew Morton
2020-03-12 22:47 ` [failures] hugetlbfs-use-i_mmap_rwsem-to-address-page-fault-truncate-race.patch " Andrew Morton
2020-03-12 22:53 ` + mm-sparsec-use-kvmalloc_node-kvfree-to-alloc-free-memmap-for-the-classic-sparse.patch added to " Andrew Morton
2020-03-12 23:41 ` + mm-sparsec-introduce-new-function-fill_subsection_map.patch " Andrew Morton
2020-03-12 23:41 ` + mm-sparsec-introduce-a-new-function-clear_subsection_map.patch " Andrew Morton
2020-03-12 23:41 ` + mm-sparsec-only-use-subsection-map-in-vmemmap-case.patch " Andrew Morton
2020-03-12 23:41 ` + mm-sparsec-add-note-about-only-vmemmap-supporting-sub-section-hotplug.patch " Andrew Morton
2020-03-12 23:41 ` + mm-sparsec-move-subsection_map-related-functions-together.patch " Andrew Morton
2020-03-12 23:43 ` + mm-make-may_enter_fs-bool-in-shrink_page_list.patch " Andrew Morton
2020-03-12 23:44 ` + stackdepot-check-depot_index-before-accessing-the-stack-slab-fix.patch " Andrew Morton
2020-03-13 0:26 ` + mm-do-not-allow-madv_pageout-for-cow-pages.patch " Andrew Morton
2020-03-13 0:32 ` + mm-gup-track-foll_pin-pages-fix-2-fix.patch " Andrew Morton
2020-03-13 3:05 ` + a.patch " Andrew Morton
2020-03-13 3:05 ` + mm-hugetlb-optionally-allocate-gigantic-hugepages-using-cma-fix.patch " Andrew Morton
2020-03-13 3:13 ` + kasan-stackdepot-move-filter_irq_stacks-to-stackdepotc-fix-1.patch " Andrew Morton
2020-03-13 3:13 ` + kasan-stackdepot-move-filter_irq_stacks-to-stackdepotc-fix-2.patch " Andrew Morton
2020-03-13 3:25 ` + selftests-vm-fix-map_hugetlb-length-used-for-testing-read-and-write.patch " Andrew Morton
2020-03-13 4:49 ` mmotm 2020-03-12-21-49 uploaded Andrew Morton
2020-03-18 2:58 ` + proc-inline-vma_stop-into-m_stop.patch added to -mm tree Andrew Morton
2020-03-18 2:58 ` + proc-remove-m_cache_vma.patch " Andrew Morton
2020-03-18 2:58 ` + proc-use-ppos-instead-of-m-version.patch " Andrew Morton
2020-03-18 2:58 ` + seq_file-remove-m-version.patch " Andrew Morton
2020-03-18 2:58 ` + proc-inline-m_next_vma-into-m_next.patch " Andrew Morton
2020-03-18 2:59 ` + mm-kmemleak-silence-kcsan-splats-in-checksum.patch " Andrew Morton
2020-03-18 3:07 ` + mm-swap-make-page_evictable-inline.patch " Andrew Morton
2020-03-18 3:07 ` + mm-swap-use-smp_mb__after_atomic-to-order-lru-bit-set.patch " Andrew Morton
2020-03-18 3:12 ` + mm-mmu_notifier-silence-prove_rcu_list-warnings.patch " Andrew Morton
2020-03-18 3:19 ` + lib-test_lockup-test-module-to-generate-lockups-fix.patch " Andrew Morton
2020-03-18 3:25 ` + ocfs2-roll-back-the-reference-count-modification-of-the-parent-directory-if-an-error-occurs.patch " Andrew Morton
2020-03-18 4:08 ` + hv_balloon-dont-check-for-memhp_auto_online-manually-fix.patch " Andrew Morton
2020-03-18 4:08 ` + drivers-base-memory-rename-mmop_online_keep-to-mmop_online.patch " Andrew Morton
2020-03-18 4:08 ` + drivers-base-memory-map-mmop_offline-to-0.patch " Andrew Morton
2020-03-18 4:08 ` + drivers-base-memory-store-mapping-between-mmop_-and-string-in-an-array.patch " Andrew Morton
2020-03-18 4:08 ` + powernv-memtrace-always-online-added-memory-blocks.patch " Andrew Morton
2020-03-18 4:08 ` + hv_balloon-dont-check-for-memhp_auto_online-manually.patch " Andrew Morton
2020-03-18 4:08 ` + hv_balloon-dont-check-for-memhp_auto_online-manually-fix.patch " Andrew Morton
2020-03-18 4:08 ` + mm-memory_hotplug-unexport-memhp_auto_online.patch " Andrew Morton
2020-03-18 4:08 ` + mm-memory_hotplug-convert-memhp_auto_online-to-store-an-online_type.patch " Andrew Morton
2020-03-18 4:08 ` + mm-memory_hotplug-allow-to-specify-a-default-online_type.patch " Andrew Morton
2020-03-18 4:57 ` + mm-code-cleanup-for-madv_free.patch " Andrew Morton
2020-03-18 5:02 ` + mm-hugetlb-fix-build-failure-with-hugetlb_page-but-not-hugebtlbfs.patch " Andrew Morton
2020-03-18 20:21 ` + mm-compactionc-clean-code-by-removing-unnecessary-assignment.patch " Andrew Morton
2020-03-18 20:31 ` + mm-hugetlb-fix-hugetlb_cma_reserve-if-config_numa-isnt-set.patch " Andrew Morton
2020-03-18 20:39 ` + mm-clarify-a-confusing-comment-for-vm_iomap_memory.patch " Andrew Morton
2020-03-18 21:03 ` + psi-move-pf_memstall-out-of-task-flags.patch " Andrew Morton
2020-03-18 21:08 ` + ocfs2-use-scnprintf-for-avoiding-potential-buffer-overflow.patch " Andrew Morton
2020-03-18 21:12 ` + mm-memcg-make-memoryoomgroup-tolerable-to-task-migration.patch " Andrew Morton
2020-03-18 21:14 ` [to-be-updated] mm-swap-make-page_evictable-inline.patch removed from " Andrew Morton
2020-03-18 21:14 ` [to-be-updated] mm-swap-use-smp_mb__after_atomic-to-order-lru-bit-set.patch " Andrew Morton
2020-03-18 21:19 ` + memremap-remove-stale-comments.patch added to " Andrew Morton
2020-03-18 21:30 ` + hugetlbfs-use-i_mmap_rwsem-for-more-pmd-sharing-synchronization.patch " Andrew Morton
2020-03-18 21:30 ` + hugetlbfs-use-i_mmap_rwsem-to-address-page-fault-truncate-race.patch " Andrew Morton
2020-03-20 23:36 ` + mm-dmapoolc-micro-optimisation-remove-unnecessary-branch.patch " Andrew Morton
2020-03-20 23:48 ` + mm-slub-prevent-kmalloc_node-crashes-and-memory-leaks.patch " Andrew Morton
2020-03-20 23:48 ` + revert-topology-add-support-for-node_to_mem_node-to-determine-the-fallback-node.patch " Andrew Morton
2020-03-20 23:55 ` + mmap-remove-inline-of-vm_unmapped_area.patch " Andrew Morton
2020-03-20 23:55 ` + mm-mmap-add-trace-point-of-vm_unmapped_area.patch " Andrew Morton
2020-03-21 0:23 ` [to-be-updated] kcov-cleanup-debug-messages.patch removed from " Andrew Morton
2020-03-21 0:23 ` [to-be-updated] kcov-collect-coverage-from-interrupts.patch " Andrew Morton
2020-03-21 0:23 ` [to-be-updated] usb-core-kcov-collect-coverage-from-usb-complete-callback.patch " Andrew Morton
2020-03-21 0:27 ` + kcov-cleanup-debug-messages.patch added to " Andrew Morton
2020-03-21 0:27 ` + kcov-fix-potential-use-after-free-in-kcov_remote_start.patch " Andrew Morton
2020-03-21 0:27 ` + kcov-move-t-kcov-assignments-into-kcov_start-stop.patch " Andrew Morton
2020-03-21 0:27 ` + kcov-move-t-kcov_sequence-assignment.patch " Andrew Morton
2020-03-21 0:27 ` + kcov-use-t-kcov_mode-as-enabled-indicator.patch " Andrew Morton
2020-03-21 0:27 ` + kcov-collect-coverage-from-interrupts.patch " Andrew Morton
2020-03-21 0:27 ` + usb-core-kcov-collect-coverage-from-usb-complete-callback.patch " Andrew Morton
2020-03-21 0:40 ` + dynamic_debug-use-address-of-operator-on-section-symbols.patch " Andrew Morton
2020-03-21 0:45 ` + mm-vmscanc-do_try_to_free_pages-clean-code-by-removing-unnecessary-assignment.patch " Andrew Morton
2020-03-21 0:54 ` + mm-compaction-disable-compact_unevictable_allowed-on-rt-v5.patch " Andrew Morton
2020-03-21 1:22 ` + mm-swap-make-page_evictable-inline.patch " Andrew Morton
2020-03-21 1:22 ` + mm-swap-use-smp_mb__after_atomic-to-order-lru-bit-set.patch " Andrew Morton
2020-03-21 2:07 ` + sparcx86-vdso-remove-meaningless-undefining-config_optimize_inlining.patch " Andrew Morton
2020-03-21 2:07 ` + compiler-remove-config_optimize_inlining-entirely.patch " Andrew Morton
2020-03-21 2:13 ` + mm-swap-make-page_evictable-inline-fix.patch " Andrew Morton
2020-03-21 2:23 ` + selftests-kmod-fix-handling-test-numbers-above-9.patch " Andrew Morton
2020-03-21 2:42 ` + mm-hugetlbc-fix-printk-format-warning-for-32-bit-phys_addr_t.patch " Andrew Morton
2020-03-21 2:42 ` + mm-hugetlbc-fix-printk-format-warning-for-32-bit-phys_addr_t-fix.patch " Andrew Morton
2020-03-21 2:48 ` [to-be-updated] mm-sparsec-use-kvmalloc_node-kvfree-to-alloc-free-memmap-for-the-classic-sparse.patch removed from " Andrew Morton
2020-03-21 2:48 ` + mm-sparsec-use-kvmalloc-kvfree-to-alloc-free-memmap-for-the-classic-sparse.patch added to " Andrew Morton
2020-03-21 3:05 ` + mm-memory_hotplug-use-__pfn_to_section-instead-of-open-coding.patch " Andrew Morton
2020-03-21 20:24 ` + mm-swap_statec-use-the-same-way-to-count-page-in-_swap_cache.patch " Andrew Morton
2020-03-21 20:36 ` + change-email-address-for-pali-rohar.patch " Andrew Morton
2020-03-21 20:41 ` + hugetlb_cgroup-fix-illegal-access-to-memory.patch " Andrew Morton
2020-03-21 20:43 ` + scripts-spellingtxt-add-more-spellings-to-spellingtxt.patch " Andrew Morton
2020-03-21 21:14 ` + mm-sparsec-move-subsection_map-related-functions-together-fix.patch " Andrew Morton
2020-03-21 22:17 ` mmotm 2020-03-21-15-17 uploaded Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200310034135.nOLpeXwrX%akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=aarcange@redhat.com \
--cc=bgeffon@google.com \
--cc=bobbypowers@gmail.com \
--cc=cracauer@cons.org \
--cc=david@redhat.com \
--cc=dgilbert@redhat.com \
--cc=dplotnikov@virtuozzo.com \
--cc=gokhale2@llnl.gov \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=jglisse@redhat.com \
--cc=kirill@shutemov.name \
--cc=linux-kernel@vger.kernel.org \
--cc=mcfadden8@llnl.gov \
--cc=mgorman@suse.de \
--cc=mike.kravetz@oracle.com \
--cc=mm-commits@vger.kernel.org \
--cc=peterx@redhat.com \
--cc=riel@redhat.com \
--cc=rppt@linux.vnet.ibm.com \
--cc=shli@fb.com \
--cc=xemul@parallels.com \
--cc=xemul@virtuozzo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).