On Mon, May 25, 2026 at 12:13:18PM +0000, [email protected] wrote: > Thank you for your contribution! Sashiko AI review found 3 potential issue(s) > to consider: > > New issues: > - [High] UFFD_RWP silently fails to apply PAGE_NONE protection on > architectures without CONFIG_ARCH_HAS_PTE_PROTNONE.
CONFIG_USERFAULTFD_RWP depends on ARCH_HAS_PTE_PROTNONE (mm/Kconfig) and VM_UFFD_RWP is VM_NONE without it (include/linux/mm.h), so UFFDIO_REGISTER_MODE_RWP is rejected and change_protection() is never called with MM_CP_UFFD_RWP on such archs. > - [High] Resolving UFFD_RWP incorrectly clears UFFD_WP PTE markers. WP and RWP are mutually exclusive at registration (the explicit reject in userfaultfd_register()), and UFFDIO_SET_MODE only toggles RWP_ASYNC, not the WP/RWP mode itself. A VMA armed with one can't carry the other's markers; the (uffd_wp_resolve || uffd_rwp_resolve) OR is safe. > > Pre-existing issues: > - [High] mprotect() silently drops userfaultfd protection bits from > migration and device-private swap entries. Confirmed and pre-existing -- change_softleaf_pte() preserves pte_swp_soft_dirty but not pte_swp_uffd when rebuilding a migration or device_private_write entry. Plain mprotect() over a migrating page strips the bit, breaking the trap on swap-in. Will address in a separate fix after this series. > -- > Sashiko AI review ยท > https://sashiko.dev/#/patchset/[email protected]?part=5 -- Kiryl Shutsemau / Kirill A. Shutemov

