• Bug#1102914:

    From Salvatore Bonaccorso@21:1/5 to Milan Broz on Tue Apr 15 17:50:01 2025
    Hi Milan,

    On Tue, Apr 15, 2025 at 05:01:15PM +0200, Milan Broz wrote:
    Hi,

    I tried upstream stable git and bisect, this is the conclusion:

    - upstream 6.1.134 is still broken

    - bisect points to this patch
    (Patch cannot be easily reverted, it need some other patches, anyway, it can be used as reference what need to be backported)

    476c1dfefab8b98ae9c3e3ad283c2ac10d30c774 is the first bad commit
    commit 476c1dfefab8b98ae9c3e3ad283c2ac10d30c774
    Author: David Howells <[email protected]>
    Date: Fri May 26 22:41:40 2023 +0100

    mm: Don't pin ZERO_PAGE in pin_user_pages()

    [ Upstream commit c8070b78751955e59b42457b974bea4a4fe00187 ]

    Make pin_user_pages*() leave a ZERO_PAGE unpinned if it extracts a pointer
    to it from the page tables and make unpin_user_page*() correspondingly
    ignore a ZERO_PAGE when unpinning. We don't want to risk overrunning a
    zero page's refcount as we're only allowed ~2 million pins on it -
    something that userspace can conceivably trigger.

    Add a pair of functions to test whether a page or a folio is a ZERO_PAGE.

    Signed-off-by: David Howells <[email protected]>
    cc: Christoph Hellwig <[email protected]>
    cc: David Hildenbrand <[email protected]>
    cc: Lorenzo Stoakes <[email protected]>
    cc: Andrew Morton <[email protected]>
    cc: Jens Axboe <[email protected]>
    cc: Al Viro <[email protected]>
    cc: Matthew Wilcox <[email protected]>
    cc: Jan Kara <[email protected]>
    cc: Jeff Layton <[email protected]>
    cc: Jason Gunthorpe <[email protected]>
    cc: Logan Gunthorpe <[email protected]>
    cc: Hillf Danton <[email protected]>
    cc: Christian Brauner <[email protected]>
    cc: Linus Torvalds <[email protected]>
    cc: [email protected]
    cc: [email protected]
    cc: [email protected]
    cc: [email protected]
    Reviewed-by: Lorenzo Stoakes <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Stable-dep-of: bddf10d26e6e ("uprobes: Reject the shared zeropage in uprobe_write_opcode()")
    Signed-off-by: Sasha Levin <[email protected]>

    Documentation/core-api/pin_user_pages.rst | 6 ++++++
    include/linux/mm.h | 26 ++++++++++++++++++++++++--
    mm/gup.c | 31 ++++++++++++++++++++++++++++++-
    3 files changed, 60 insertions(+), 3 deletions(-)

    If you are going to write a mail to upstream kernel list, please cc me.

    Thanks for doing that work, I will forward the bug report now upstream
    (and sure will include you on CC).

    Regards,
    Salvatore

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)