Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp2725590pxb; Mon, 25 Apr 2022 00:35:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyvANoVCaiDFd2tI8z/DL6KF2a6qX1e9ueWs7PywMe7ftdaB8KCQfGa/jMKzuxGx8RvmRT2 X-Received: by 2002:aa7:da04:0:b0:41c:c191:64bc with SMTP id r4-20020aa7da04000000b0041cc19164bcmr4260903eds.166.1650872122064; Mon, 25 Apr 2022 00:35:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650872122; cv=none; d=google.com; s=arc-20160816; b=BOxYOFOPLVxAH1LhwXnMMRWYwIXcKVrh7ynHeQ8Tcz2LkpL5/AEIEXrCNqUvrWY9zm dSBjrfHWIXIlYfmPryhaCWFoPfrK6LJZXJBhHyQKvOxzXPuPKXUkJvzMEguNvRmYqZxu ouanvunBkeHiiZZ6esfGhZlsYjXNBU4moOhwM8BL/PJJ/DuF6OPKOP7m+aDlJjzhja3g j+Os5zoF1c6ffsHd9c0UxSh763hKE4k0H69mlfRm748H+rKsPPB1QqNvveO78Jp6LBWQ ZwFX9QnXZ13Qh03SGaYz7WKe28ROCkZk06YG5L7MA4RoGHUDt9T6H5wHfX2JSV5R/n4A cTWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=dVWOTTbOyzehsxQ1pgy809hP4SJnOvLVqvyEsEI7Jqs=; b=fOov/tOyJF/VuvLbA7SurjyqT7GHCPgNZYV0VbgKuBmM7rhaBQ2rQvvImSwTWZ8UTb jBn19H+XIjAapjxCOlqNwIo9mg4xwTUnDL2zSDWQ5QP2SHIJi+xKfvYNd05+7Jv2kW8u osTGRFpGY2KlLFT2PLXjabbIpLnPcO0MbOC73BQ/i1/aU1f30+Goqp/B3a5CrIytz6y8 adgeAZ8bD+etlz+hyUP5ldm7keb2nGKmIuNF2OryFGTA2nk9y/QXTedVUEXBjtMTba7Q tDLodL1GLg+O62YrSYbHp2TaVDCDvuGMCRGodweqdtG5HpGOPXLO0HzmWSSpKbNS4Frx aVpA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w8-20020a17090649c800b006e8c12d426csi12016564ejv.1002.2022.04.25.00.34.57; Mon, 25 Apr 2022 00:35:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238822AbiDXJNy (ORCPT + 99 others); Sun, 24 Apr 2022 05:13:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32896 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238798AbiDXJNo (ORCPT ); Sun, 24 Apr 2022 05:13:44 -0400 Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5EDF266F8C for ; Sun, 24 Apr 2022 02:10:44 -0700 (PDT) Received: from canpemm500002.china.huawei.com (unknown [172.30.72.56]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4KmMmJ41hYz1JBMN; Sun, 24 Apr 2022 17:09:52 +0800 (CST) Received: from huawei.com (10.175.124.27) by canpemm500002.china.huawei.com (7.192.104.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Sun, 24 Apr 2022 17:10:41 +0800 From: Miaohe Lin To: CC: , , , , , , , , , , , , , Subject: [PATCH v3 2/3] mm/swapfile: Fix lost swap bits in unuse_pte() Date: Sun, 24 Apr 2022 17:11:04 +0800 Message-ID: <20220424091105.48374-3-linmiaohe@huawei.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220424091105.48374-1-linmiaohe@huawei.com> References: <20220424091105.48374-1-linmiaohe@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.175.124.27] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To canpemm500002.china.huawei.com (7.192.104.244) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is observed by code review only but not any real report. When we turn off swapping we could have lost the bits stored in the swap ptes. The new rmap-exclusive bit is fine since that turned into a page flag, but not for soft-dirty and uffd-wp. Add them. Suggested-by: Peter Xu Signed-off-by: Miaohe Lin --- mm/swapfile.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 95b63f69f388..522a0eb16bf1 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1783,7 +1783,7 @@ static int unuse_pte(struct vm_area_struct *vma, pmd_t *pmd, { struct page *swapcache; spinlock_t *ptl; - pte_t *pte; + pte_t *pte, new_pte; int ret = 1; swapcache = page; @@ -1832,8 +1832,12 @@ static int unuse_pte(struct vm_area_struct *vma, pmd_t *pmd, page_add_new_anon_rmap(page, vma, addr); lru_cache_add_inactive_or_unevictable(page, vma); } - set_pte_at(vma->vm_mm, addr, pte, - pte_mkold(mk_pte(page, vma->vm_page_prot))); + new_pte = pte_mkold(mk_pte(page, vma->vm_page_prot)); + if (pte_swp_soft_dirty(*pte)) + new_pte = pte_mksoft_dirty(new_pte); + if (pte_swp_uffd_wp(*pte)) + new_pte = pte_mkuffd_wp(new_pte); + set_pte_at(vma->vm_mm, addr, pte, new_pte); swap_free(entry); out: pte_unmap_unlock(pte, ptl); -- 2.23.0