From patchwork Fri Apr 1 07:29:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miaohe Lin X-Patchwork-Id: 12797959 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28023C433F5 for ; Fri, 1 Apr 2022 07:29:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6E2B96B0071; Fri, 1 Apr 2022 03:29:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 69BA86B0072; Fri, 1 Apr 2022 03:29:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 581F96B0073; Fri, 1 Apr 2022 03:29:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.27]) by kanga.kvack.org (Postfix) with ESMTP id 45D526B0071 for ; Fri, 1 Apr 2022 03:29:10 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 5CC2F2383B for ; Fri, 1 Apr 2022 07:28:58 +0000 (UTC) X-FDA: 79307483556.10.D33E16F Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by imf22.hostedemail.com (Postfix) with ESMTP id 14799C0015 for ; Fri, 1 Apr 2022 07:28:56 +0000 (UTC) Received: from canpemm500002.china.huawei.com (unknown [172.30.72.54]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4KVBYn5N7QzDqCs; Fri, 1 Apr 2022 15:26:37 +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.2308.21; Fri, 1 Apr 2022 15:28:52 +0800 From: Miaohe Lin To: CC: , , Subject: [PATCH] mm/swapfile: unuse_pte can map random data if swap read fails Date: Fri, 1 Apr 2022 15:29:26 +0800 Message-ID: <20220401072926.45051-1-linmiaohe@huawei.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-Originating-IP: [10.175.124.27] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To canpemm500002.china.huawei.com (7.192.104.244) X-CFilter-Loop: Reflected X-Stat-Signature: xtppzrqcqm5efcobzw35dqoghqn6c5nh X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 14799C0015 Authentication-Results: imf22.hostedemail.com; dkim=none; spf=pass (imf22.hostedemail.com: domain of linmiaohe@huawei.com designates 45.249.212.188 as permitted sender) smtp.mailfrom=linmiaohe@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com X-Rspam-User: X-HE-Tag: 1648798136-16640 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: There is a bug in unuse_pte(): when swap page happens to be unreadable, page filled with random data is mapped into user address space. The fix is to check for PageUptodate and fail swapoff in case of error. Signed-off-by: Miaohe Lin --- mm/swapfile.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/swapfile.c b/mm/swapfile.c index 63c61f8b2611..e72a35de7a0f 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1795,6 +1795,10 @@ static int unuse_pte(struct vm_area_struct *vma, pmd_t *pmd, ret = 0; goto out; } + if (unlikely(!PageUptodate(page))) { + ret = -EIO; + goto out; + } dec_mm_counter(vma->vm_mm, MM_SWAPENTS); inc_mm_counter(vma->vm_mm, MM_ANONPAGES);