Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp760137pxb; Tue, 5 Apr 2022 22:07:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJymS3giE2tfiKcUJJ4G/9Dzxb4CL5GbNo/paM52LzZOyfoVYK3IVhIffVs+BZkdRve1XrTZ X-Received: by 2002:a17:90b:4b4f:b0:1c7:d415:5b79 with SMTP id mi15-20020a17090b4b4f00b001c7d4155b79mr8034494pjb.96.1649221655099; Tue, 05 Apr 2022 22:07:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649221655; cv=none; d=google.com; s=arc-20160816; b=0xdRLvqgPR20jpp8+/3fAXT4dzIJGY5x+N0hrGFIeEbIdRnabIiuaDitbszA7BtE6H NXjHNi0WUIMdJqERIVEYDgdkwG9v+gg+/LJxUD61PuazqKiGR117R/ZEiU8GWjc3fF4c /cvnWlhfEItDr8P1owDYAdGDPSIkEWYPnbbiXZLFkUDDoxfObnRqnHqTUPJlu81lutyr EXmiKZgPCa0lJhYemkW1Kwt2PCLMEP1CiFNpacR9u3sD55Scjk1G9GEnBwdZmF5We1As JpM1sKLljNOfDabY7h17JUqxmbG6auNygkwzQzvG/nj5XrHT1U4AvpW5BHRoxVe74dy0 cctg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=7tu+L/X5WGhfaY6CKnN4uW1m62oMknFzf+sGXykXoKE=; b=Za85kMIOPpMBMNzhwUjpr/NTdKOtrFLl5yN9ri56xeu/PAL2idw2F2y9R8DKB4AwuM El4wm5JG9upjX0QQu9d9qY2T62K7gKrL/oa+IrAl81TMSrEJJfRnNHdvQM0SqnTdy8bU cUGagxvtAmQXthwL3ujzV3L3VSxzy/CDdB98cT5X9cmRgcFfRG2CfZ9PfG5XgokIXftr 6+Ztzf9sOv0gFufBVgG87HNV2iJcxvHC3HEPGqdwjj5pZAEB7CjlYbRYucKpqn2DsQxB fTIzgSxJij6A9aMXBKVfA9+F5k/coOjACeZdevFJwKRYeTVKhx1Oq8E6CWaVxZ2br4+5 aNEg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=o5ev8uv4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id x15-20020a17090a46cf00b001c7bfb058absi3485071pjg.99.2022.04.05.22.07.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Apr 2022 22:07:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=o5ev8uv4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 603D53E4C38; Tue, 5 Apr 2022 20:31:09 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387118AbiDEOaJ (ORCPT + 99 others); Tue, 5 Apr 2022 10:30:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240044AbiDEJeB (ORCPT ); Tue, 5 Apr 2022 05:34:01 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1155780233; Tue, 5 Apr 2022 02:23:22 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id BD614B81C8B; Tue, 5 Apr 2022 09:23:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 099AEC385A2; Tue, 5 Apr 2022 09:23:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649150599; bh=yd6u9ETwkDQ70bORWJl2+AWajsudmLZn14KtxPA5cqE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=o5ev8uv4InJZ0CBF1js6XPoFV7RoxDmdERUTNOxKtUUX9w+LdMzdaRfvn5ybMvDxv +tEfxCZZ/khKFT4HRIe601mkfwFX/O7o2LGNkbVlTzav7OtoNqbXIvEeghrDdiPsn0 hMxbLy9VTBFXUqyj0xq9PvoNkc3G1U+peVcmoUgU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Rik van Riel , Miaohe Lin , Naoya Horiguchi , Oscar Salvador , John Hubbard , Mel Gorman , Johannes Weiner , Matthew Wilcox , Andrew Morton , Linus Torvalds Subject: [PATCH 5.15 085/913] mm: invalidate hwpoison page cache page in fault path Date: Tue, 5 Apr 2022 09:19:07 +0200 Message-Id: <20220405070342.370386312@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070339.801210740@linuxfoundation.org> References: <20220405070339.801210740@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no 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 From: Rik van Riel commit e53ac7374e64dede04d745ff0e70ff5048378d1f upstream. Sometimes the page offlining code can leave behind a hwpoisoned clean page cache page. This can lead to programs being killed over and over and over again as they fault in the hwpoisoned page, get killed, and then get re-spawned by whatever wanted to run them. This is particularly embarrassing when the page was offlined due to having too many corrected memory errors. Now we are killing tasks due to them trying to access memory that probably isn't even corrupted. This problem can be avoided by invalidating the page from the page fault handler, which already has a branch for dealing with these kinds of pages. With this patch we simply pretend the page fault was successful if the page was invalidated, return to userspace, incur another page fault, read in the file from disk (to a new memory page), and then everything works again. Link: https://lkml.kernel.org/r/20220212213740.423efcea@imladris.surriel.com Signed-off-by: Rik van Riel Reviewed-by: Miaohe Lin Acked-by: Naoya Horiguchi Reviewed-by: Oscar Salvador Cc: John Hubbard Cc: Mel Gorman Cc: Johannes Weiner Cc: Matthew Wilcox Cc: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- mm/memory.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) --- a/mm/memory.c +++ b/mm/memory.c @@ -3861,11 +3861,16 @@ static vm_fault_t __do_fault(struct vm_f return ret; if (unlikely(PageHWPoison(vmf->page))) { - if (ret & VM_FAULT_LOCKED) + vm_fault_t poisonret = VM_FAULT_HWPOISON; + if (ret & VM_FAULT_LOCKED) { + /* Retry if a clean page was removed from the cache. */ + if (invalidate_inode_page(vmf->page)) + poisonret = 0; unlock_page(vmf->page); + } put_page(vmf->page); vmf->page = NULL; - return VM_FAULT_HWPOISON; + return poisonret; } if (unlikely(!(ret & VM_FAULT_LOCKED)))