Received: by 10.213.65.68 with SMTP id h4csp264232imn; Fri, 23 Mar 2018 04:14:56 -0700 (PDT) X-Google-Smtp-Source: AG47ELs+SnaAvFbaRQPtSe6DDVQubQyTb1Xvk6n/OyFmuqj46bso4xHWfSxUZAmXVHWcmVeGlFbd X-Received: by 10.98.3.66 with SMTP id 63mr23814462pfd.177.1521803695958; Fri, 23 Mar 2018 04:14:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521803695; cv=none; d=google.com; s=arc-20160816; b=Sb0+qejTm+3QjSBzu9m4Q0Er2ttqm4t8sUbj5/RryTk2caz/xCpEDnV6HRDrdKSkry LpeE91LWcibhDzRc/iYSQtdibLd4+oG/CGF/Pi3VVzj876mF6b8fVJVXpbjFuysOjf6p mJcSAFq2atvx2MlYnRWTy4NePMS4DAn5Xf3jTrmnBWIhe0U13UPyRS4VrLKk9GC1QeF+ JPVX6bvneFcBEdjV00Dd+4sAC6Jc68Kj7C8cGwY3RfCcHCUW3LYQrpUdZS/N7URf+u2w W0vjtrPKKvLDZweQ71InK1a/p6hdbFxg8wJBhMQDXRu7CrFINRlhlUqbzJc/GXY3xrkf R/lQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=0fRCv24UwNW+R8jEJgz0NDVbkPj04BgPQUnCP7jruMM=; b=MWuDY/ppvVY9BzNVc3pLtp281IBpF2EwjnVTCn5MJpYyswoRETRN1e/VU1GjCEn01/ 33CoGovNUiE6hEZ5lGeEaArpy+gvqSO3l7q/Q1h5T9FoUnXY3QyWsDP49j6Vjaj7gI0g evLyw9UNECi3bBQANoaFksjjzcwr9lvIlmxAxL2xeeizLgCOVa7IvXmrYlTx4TBW9GZC meUyJrcN8jmSS+AOsxExSbDp9E68d5WkiDC9CYiHd2+2qav6H6mHv4uDnfkt7vdnK/ne JViOBi/XCim2WlEMoiFek23GpH4OmLdtFGYmfZ4VqL++6zGvchgSEElO/JujCKNVSKgg 5Lbw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f9-v6si8412710pln.542.2018.03.23.04.14.41; Fri, 23 Mar 2018 04:14:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932795AbeCWKKp (ORCPT + 99 others); Fri, 23 Mar 2018 06:10:45 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:42726 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932734AbeCWKKm (ORCPT ); Fri, 23 Mar 2018 06:10:42 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 8FF33119C; Fri, 23 Mar 2018 10:10:41 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Naoya Horiguchi , kernel test robot , Xiaolong Ye , Chen Gong , Andrew Morton , Linus Torvalds , Sasha Levin Subject: [PATCH 4.9 128/177] mm: hwpoison: call shake_page() after try_to_unmap() for mlocked page Date: Fri, 23 Mar 2018 10:54:16 +0100 Message-Id: <20180323094210.876445498@linuxfoundation.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180323094205.090519271@linuxfoundation.org> References: <20180323094205.090519271@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Naoya Horiguchi [ Upstream commit 286c469a988fbaf68e3a97ddf1e6c245c1446968 ] Memory error handler calls try_to_unmap() for error pages in various states. If the error page is a mlocked page, error handling could fail with "still referenced by 1 users" message. This is because the page is linked to and stays in lru cache after the following call chain. try_to_unmap_one page_remove_rmap clear_page_mlock putback_lru_page lru_cache_add memory_failure() calls shake_page() to hanlde the similar issue, but current code doesn't cover because shake_page() is called only before try_to_unmap(). So this patches adds shake_page(). Fixes: 23a003bfd23ea9ea0b7756b920e51f64b284b468 ("mm/madvise: pass return code of memory_failure() to userspace") Link: http://lkml.kernel.org/r/20170417055948.GM31394@yexl-desktop Link: http://lkml.kernel.org/r/1493197841-23986-3-git-send-email-n-horiguchi@ah.jp.nec.com Signed-off-by: Naoya Horiguchi Reported-by: kernel test robot Cc: Xiaolong Ye Cc: Chen Gong Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- mm/memory-failure.c | 8 ++++++++ 1 file changed, 8 insertions(+) --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -921,6 +921,7 @@ static int hwpoison_user_mappings(struct int ret; int kill = 1, forcekill; struct page *hpage = *hpagep; + bool mlocked = PageMlocked(hpage); /* * Here we are interested only in user-mapped pages, so skip any @@ -985,6 +986,13 @@ static int hwpoison_user_mappings(struct pfn, page_mapcount(hpage)); /* + * try_to_unmap() might put mlocked page in lru cache, so call + * shake_page() again to ensure that it's flushed. + */ + if (mlocked) + shake_page(hpage, 0); + + /* * Now that the dirty bit has been propagated to the * struct page and all unmaps done we can decide if * killing is needed or not. Only kill when the page