lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230411141529.428991-2-david@redhat.com>
Date:   Tue, 11 Apr 2023 16:15:23 +0200
From:   David Hildenbrand <david@...hat.com>
To:     linux-kernel@...r.kernel.org
Cc:     linux-mm@...ck.org, linux-kselftest@...r.kernel.org,
        sparclinux@...r.kernel.org, David Hildenbrand <david@...hat.com>,
        Andrew Morton <akpm@...ux-foundation.org>,
        "David S. Miller" <davem@...emloft.net>,
        Peter Xu <peterx@...hat.com>, Hugh Dickins <hughd@...gle.com>,
        Shuah Khan <shuah@...nel.org>, Sam Ravnborg <sam@...nborg.org>,
        Yu Zhao <yuzhao@...gle.com>,
        Anshuman Khandual <anshuman.khandual@....com>
Subject: [PATCH v1 0/6] mm: (pte|pmd)_mkdirty() should not unconditionally allow for write access

This is the follow-up on [1], adding selftests (testing for known issues
we added workarounds for and other issues that haven't been fixed yet),
fixing sparc64, reverting the workarounds, and perform one cleanup.

The patch from [1] was modified slightly (updated/extended patch
description, dropped one unnecessary NOP instruction from the ASM in
__pte_mkhwwrite()).

Retested on x86_64 and sparc64 (sun4u in QEMU).

I scanned most architectures to make sure their (pte|pmd)_mkdirty()
handling is correct. To be sure, we can run the selftests and find out if
other architectures are still affectes (loongarch was fixed recently as
well).

Based on master for now. I don't expect surprises regarding mm-tress, but
I can rebase if there are any problems.

[1] https://lkml.kernel.org/r/20221212130213.136267-1-david@redhat.com

Cc: Andrew Morton <akpm@...ux-foundation.org>
Cc: "David S. Miller" <davem@...emloft.net>
Cc: Peter Xu <peterx@...hat.com>
Cc: Hugh Dickins <hughd@...gle.com>
Cc: Shuah Khan <shuah@...nel.org>
Cc: Sam Ravnborg <sam@...nborg.org>
Cc: Yu Zhao <yuzhao@...gle.com>
Cc: Anshuman Khandual <anshuman.khandual@....com>

David Hildenbrand (6):
  selftests/mm: reuse read_pmd_pagesize() in COW selftest
  selftests/mm: mkdirty: test behavior of (pte|pmd)_mkdirty on VMAs
    without write permissions
  sparc/mm: don't unconditionally set HW writable bit when setting PTE
    dirty on 64bit
  mm/migrate: revert "mm/migrate: fix wrongly apply write bit after
    mkdirty on sparc64"
  mm/huge_memory: revert "Partly revert "mm/thp: carry over dirty bit
    when thp splits on pmd""
  mm/huge_memory: conditionally call maybe_mkwrite() and drop
    pte_wrprotect() in __split_huge_pmd_locked()

 arch/sparc/include/asm/pgtable_64.h           | 116 +++---
 mm/huge_memory.c                              |  16 +-
 mm/migrate.c                                  |   2 -
 tools/testing/selftests/mm/Makefile           |   2 +
 tools/testing/selftests/mm/cow.c              |  33 +-
 tools/testing/selftests/mm/khugepaged.c       |   4 +
 tools/testing/selftests/mm/mkdirty.c          | 379 ++++++++++++++++++
 tools/testing/selftests/mm/soft-dirty.c       |   3 +
 .../selftests/mm/split_huge_page_test.c       |   4 +
 tools/testing/selftests/mm/vm_util.c          |   4 +-
 10 files changed, 468 insertions(+), 95 deletions(-)
 create mode 100644 tools/testing/selftests/mm/mkdirty.c

-- 
2.39.2

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ