From patchwork Tue Nov 8 18:43:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 17169 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp2885490wru; Tue, 8 Nov 2022 10:45:56 -0800 (PST) X-Google-Smtp-Source: AMsMyM4vRKswNxaoXlWz73h6N97TCKwwJinZQXl8jmMuWLzQgSGtLsnv1AsSAlrEDpirsjJepeja X-Received: by 2002:a17:902:7b95:b0:178:ab50:76b5 with SMTP id w21-20020a1709027b9500b00178ab5076b5mr57928853pll.161.1667933156286; Tue, 08 Nov 2022 10:45:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1667933156; cv=none; d=google.com; s=arc-20160816; b=yE8MhM7xSkQ+7ZovopmCC6BmKieFJX44e0WcUzJo9mbygM+WZs5MHY+//x53IWjiDR K/N2ncwbtDYmlyjpXUQhiLNA3PA7kMcKeaHqs6sdN+7qgH2Ux4fNzH48ymVDHnli5xTV ctuLx2XYZpkDgiRDUFY5GnHEIhXldrNOCceW/dnOP1tJe/Q+mkH7f5bCu6rjRtUoSVvw 34YKn7akEE4pVqIAcbTqQ2/GfwOt4OOKSqoayKy8tGwCiA6sida2L2RpPtdf1i+imq40 wXmReyrZI+xotZ7gqaAniOaNriX4ARmPUn0Ng3UcKow54yoodMzkuqgJMWq5L1rcOb0E gzQg== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=JH2QhHpqacgVEtOu6V/3tcH+ucME36GLS7VYH7bPh2s=; b=b8qOO2o0XxBEO3Gq+AzXk3uC3X+kHcMKzyux9zw3Awxt/beHK2GeDkP2+dooqXdYoW bCDWZEPQ7CcNZ1s7ITqDaGgatpZ/cFP2CUTvHDKYyVHboh29RaP35OpSS8BYsf+RZuBF qJ3SlyxKVoFLh2pZ0i03gaoLK8HX1UatXogrZqCuq0eCmYzmac9BOon1ZgifWfYtlBIE /+H4j0FT70FYg0SIpGSrxMlVUp8TIe6FLpQ0TMvzqfHTNG10LZr/84HD9kScsWZNuLjU pMfCI0tZppnvzaC6ec6CYPGQvcGO+MYv5mJEfwasLu6Vb0QZZ657qFtk+bdHFN9HOO4U eQPA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="gfgIf/HA"; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p3-20020a63e643000000b00446ec91cdd8si14464018pgj.604.2022.11.08.10.45.42; Tue, 08 Nov 2022 10:45:56 -0800 (PST) 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; dkim=pass header.i=@gmail.com header.s=20210112 header.b="gfgIf/HA"; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233003AbiKHSpH (ORCPT + 99 others); Tue, 8 Nov 2022 13:45:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54422 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232561AbiKHSoe (ORCPT ); Tue, 8 Nov 2022 13:44:34 -0500 Received: from mail-pg1-x52a.google.com (mail-pg1-x52a.google.com [IPv6:2607:f8b0:4864:20::52a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9F4B53EED for ; Tue, 8 Nov 2022 10:44:21 -0800 (PST) Received: by mail-pg1-x52a.google.com with SMTP id q71so14128529pgq.8 for ; Tue, 08 Nov 2022 10:44:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=JH2QhHpqacgVEtOu6V/3tcH+ucME36GLS7VYH7bPh2s=; b=gfgIf/HAVM/kaYeBJhJkJ8cAIt9JH8FVUt8AbdjcL2gtn5i2PkRUCbfffZxgLEJQda Op9+9xqJl1ZSfgbDb+QoJ31XG+Y7SoFu3phXGIBD/BAi48blSD4Cy/m5cY1F0tBCCosf sqct8v5HRhlNHTPkORouibJhLs16Y7nwqpA3GX3imljNb0GU6S/UFK+giUcl8+WjhnN5 Jhgs1R1yrL0LPw2NKGkTs68Wa7hEfQkcCL9yNDgDFKkiTiH5RLEcLhiNglxXwAeW8Uzo UcsL257ewqmAUoHotpTt0ChgTn0CRmrq9BUeYpjYOqjLQQOFJ/8Bt0RwKzS6v/mY7Jl5 SKoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=JH2QhHpqacgVEtOu6V/3tcH+ucME36GLS7VYH7bPh2s=; b=V8JBgYMMIg4gj87LH3jLdNmP0Rz4J7AjnManu9CAVIirZ8sUiEWB27lN2mHDDpixPl JN/Bf3Sty0V3nnXKtR8j0MoJ61qusAgfoWpxVXIDFY7Q5xBL84Zdl2z9S+QYHBQLRLU1 BW8TV3jrT1yNqaSSr63SiH/LsCjqoAQDQnhhQ5A/sXhlb7fVyx3oXo5bmagNnEXnliCx IjLJP9JbjANcimONxrmjIGRMSZH/j1PK7ElMmo54Ww7tgW/VZ0UWNswZsa1ZQUrzwJ4X WuXTKD1K3Y2SAYXUR6NkC3ERlEnPzj87+/srZeCSIBDQS+9fu7/HbvfyZ9T4Tp0f94Ay LObg== X-Gm-Message-State: ACrzQf2xvKzpFRw+dliBbUOTiItDqGYITm6+YlyoBKaxNRUfDSgsvO+G IH/7rXmI623cDGJCZJTXVIg= X-Received: by 2002:a63:1652:0:b0:470:4524:dc9e with SMTP id 18-20020a631652000000b004704524dc9emr18476984pgw.402.1667933061111; Tue, 08 Nov 2022 10:44:21 -0800 (PST) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id ij22-20020a170902ab5600b0017f36638010sm7210438plb.276.2022.11.08.10.44.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Nov 2022 10:44:19 -0800 (PST) From: Yang Shi To: zokeefe@google.com, mhocko@suse.com, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [mm-unstable v3 PATCH 1/3] Revert "mm: don't warn if the node is offlined" Date: Tue, 8 Nov 2022 10:43:55 -0800 Message-Id: <20221108184357.55614-1-shy828301@gmail.com> X-Mailer: git-send-email 2.38.1 MIME-Version: 1.0 X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1748954676880416618?= X-GMAIL-MSGID: =?utf-8?q?1748954676880416618?= This reverts commit 6baf85a005ad36dd8586e5c3de598f8c3059dc91. --- include/linux/gfp.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 594d6dee5646..ef4aea3b356e 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -218,6 +218,7 @@ static inline struct page * __alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order) { VM_BUG_ON(nid < 0 || nid >= MAX_NUMNODES); + VM_WARN_ON((gfp_mask & __GFP_THISNODE) && !node_online(nid)); return __alloc_pages(gfp_mask, order, nid, NULL); } @@ -226,6 +227,7 @@ static inline struct folio *__folio_alloc_node(gfp_t gfp, unsigned int order, int nid) { VM_BUG_ON(nid < 0 || nid >= MAX_NUMNODES); + VM_WARN_ON((gfp & __GFP_THISNODE) && !node_online(nid)); return __folio_alloc(gfp, order, nid, NULL); } From patchwork Tue Nov 8 18:43:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 17172 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp2886703wru; Tue, 8 Nov 2022 10:48:19 -0800 (PST) X-Google-Smtp-Source: AMsMyM4ofBBO2VRrgnfeuHGlcOCrGk5yIiDQ88RmG7qidnvNoqEuUVFKVKw0vMUkt+JLa/EIwMN3 X-Received: by 2002:a05:6402:1145:b0:464:ac8:c57e with SMTP id g5-20020a056402114500b004640ac8c57emr34962977edw.58.1667933299727; Tue, 08 Nov 2022 10:48:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1667933299; cv=none; d=google.com; s=arc-20160816; b=YDVa2MJWIeFEC2Qe57TJc7eOh9XbAGejL0dymdekWi2TAeO51VXvfLNdAAKshgA26E SJlwHxAXNwZ8pEFhggvLI2NiICUhUEZKV3L+kxEikUJq1v+0WYvfDDA5D/TxTnhMyy4N +KexrVdlqysFcQ1oFodkSnNd6TtQWK2PQ6RzkXd80d28e67ISG1cOSHnQSTWJ2eFlQGW GDIYttVo0zsB7YAayNVMxfwynUBDr+44OrkraF0ilaWEZLUgyJ79xYikdat3Xay+3Lxf gWBF+M2ImqfgmqGqLks6zw7qkXKRgO/6f5WQlZIUVYzN4Hogu7lCbugtIMYbGcvxe3mp j9NQ== 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 :dkim-signature; bh=SZMixwErSopU2O8DablnyBX7zPU8BTRivT7sp7p/Y2k=; b=G9c4JTJhcq3v5VHNRqQIsbE/1aKFeSyGYHbC5v9FN4wuREsjCn787+h1zEzpc2sBJF wtdl5JtLtMhS8DgSZm4XiU1graNBcexd15Qzyo80+5yOwe04HeQqcLP1jDVOiBxX7ktj ROTZWkwjg87YcsLAI0nwUUFQ1w5C318wzlSyLcE7rA9qckzrrfYeo5tNlu/kA86BqQv3 ey5rzgMjM08UnmWHMDB5EIvdu5Q7RyFLWjQHKWdULUad+WIDhYKhh9TcWcEriClXjMRN dScGA3BZX3vs+aj15wAYJAeVFc2Z/lR7W1H4mCcPc+rkqubF6Fiw5+X2MVbEdNkYr1u6 +A+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=UWnAbl3x; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hw19-20020a170907a0d300b007adb868f102si10220879ejc.476.2022.11.08.10.47.55; Tue, 08 Nov 2022 10:48:19 -0800 (PST) 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; dkim=pass header.i=@gmail.com header.s=20210112 header.b=UWnAbl3x; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229714AbiKHSpk (ORCPT + 99 others); Tue, 8 Nov 2022 13:45:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54638 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232925AbiKHSov (ORCPT ); Tue, 8 Nov 2022 13:44:51 -0500 Received: from mail-pg1-x52a.google.com (mail-pg1-x52a.google.com [IPv6:2607:f8b0:4864:20::52a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D8E71C439 for ; Tue, 8 Nov 2022 10:44:23 -0800 (PST) Received: by mail-pg1-x52a.google.com with SMTP id q71so14128596pgq.8 for ; Tue, 08 Nov 2022 10:44:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SZMixwErSopU2O8DablnyBX7zPU8BTRivT7sp7p/Y2k=; b=UWnAbl3xsubazJPZSTpP+mGoEzK8xdDx6DvgpgItlY6+1YoyGXx/GpECTAe7UnlikC KntPpyAYXCzHCsqNqC76cAMz0msuKWO/0ZNBae3NBUneiuTOa0VW/3UrNeFVv2/TxeIh CBIiwseA0stRU00EvLBIul5+gaze5zIyQGbDqmSdaVjnH0xplySPbOSkvcVWqVtxkJdP K6JUFQtEiCjUx0awjWkunA4XSAyHf9U2Jq3qEmft+wPIh6rqPumkGL7qPJbWY034WJrw MaJnuhcbJe8R8IRYhR7ZjMWA19YzbG9L2gxhKCAx5Hr5el45OOuZAYliQIoTZzyVEgMB RTIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SZMixwErSopU2O8DablnyBX7zPU8BTRivT7sp7p/Y2k=; b=V91jTPVcFmlNoDMRNXjNUUZbH3Xnv4/mbOnhJ4jRu3AsCWz9qAZK2NG3XKyD7f97RM hKhyJVbk4GICBZ1alLxyws8SSUetXRHabAURKwWX4skIXilqwrCmyU5vZZ6ydPyWEkpo fJtfVeSI4KbqigTiKdGh6GVvknGe3Ymwom5m/i/z8fSGoWcbfj02qXA6n39PUl1GEh6S 7ed7oHCKDhwY1Eq94TzISj/mqGX9WxUI5jkh7r0FvFmaKlFJiMu4SzyEkMIlRC5MEnEb HDPH2XFQma98MOkAlWXr7MJWK2uBMxxKvcLnQrrPzCGqkL9eiVX7CktBaHpp+v8OJ6Jv xuHQ== X-Gm-Message-State: ACrzQf016BJyETiPoDXe4HBqrNmv2n9+61qb4Wi9UUdN58Y0KeQHDdqx WJVA6HTg1cLauojfkXBw8TSl6r4WbHs= X-Received: by 2002:a63:2b41:0:b0:46e:9364:eb07 with SMTP id r62-20020a632b41000000b0046e9364eb07mr48969644pgr.46.1667933063156; Tue, 08 Nov 2022 10:44:23 -0800 (PST) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id ij22-20020a170902ab5600b0017f36638010sm7210438plb.276.2022.11.08.10.44.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Nov 2022 10:44:22 -0800 (PST) From: Yang Shi To: zokeefe@google.com, mhocko@suse.com, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, syzbot+0044b22d177870ee974f@syzkaller.appspotmail.com, Zach O'Keefe Subject: [mm-unstable v3 PATCH 2/3] mm: khugepaged: allow page allocation fallback to eligible nodes Date: Tue, 8 Nov 2022 10:43:56 -0800 Message-Id: <20221108184357.55614-2-shy828301@gmail.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221108184357.55614-1-shy828301@gmail.com> References: <20221108184357.55614-1-shy828301@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1748954828203097107?= X-GMAIL-MSGID: =?utf-8?q?1748954828203097107?= Syzbot reported the below splat: WARNING: CPU: 1 PID: 3646 at include/linux/gfp.h:221 __alloc_pages_node include/linux/gfp.h:221 [inline] WARNING: CPU: 1 PID: 3646 at include/linux/gfp.h:221 hpage_collapse_alloc_page mm/khugepaged.c:807 [inline] WARNING: CPU: 1 PID: 3646 at include/linux/gfp.h:221 alloc_charge_hpage+0x802/0xaa0 mm/khugepaged.c:963 Modules linked in: CPU: 1 PID: 3646 Comm: syz-executor210 Not tainted 6.1.0-rc1-syzkaller-00454-ga70385240892 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/11/2022 RIP: 0010:__alloc_pages_node include/linux/gfp.h:221 [inline] RIP: 0010:hpage_collapse_alloc_page mm/khugepaged.c:807 [inline] RIP: 0010:alloc_charge_hpage+0x802/0xaa0 mm/khugepaged.c:963 Code: e5 01 4c 89 ee e8 6e f9 ae ff 4d 85 ed 0f 84 28 fc ff ff e8 70 fc ae ff 48 8d 6b ff 4c 8d 63 07 e9 16 fc ff ff e8 5e fc ae ff <0f> 0b e9 96 fa ff ff 41 bc 1a 00 00 00 e9 86 fd ff ff e8 47 fc ae RSP: 0018:ffffc90003fdf7d8 EFLAGS: 00010293 RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000 RDX: ffff888077f457c0 RSI: ffffffff81cd8f42 RDI: 0000000000000001 RBP: ffff888079388c0c R08: 0000000000000001 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 R13: dffffc0000000000 R14: 0000000000000000 R15: 0000000000000000 FS: 00007f6b48ccf700(0000) GS:ffff8880b9b00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f6b48a819f0 CR3: 00000000171e7000 CR4: 00000000003506e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: collapse_file+0x1ca/0x5780 mm/khugepaged.c:1715 hpage_collapse_scan_file+0xd6c/0x17a0 mm/khugepaged.c:2156 madvise_collapse+0x53a/0xb40 mm/khugepaged.c:2611 madvise_vma_behavior+0xd0a/0x1cc0 mm/madvise.c:1066 madvise_walk_vmas+0x1c7/0x2b0 mm/madvise.c:1240 do_madvise.part.0+0x24a/0x340 mm/madvise.c:1419 do_madvise mm/madvise.c:1432 [inline] __do_sys_madvise mm/madvise.c:1432 [inline] __se_sys_madvise mm/madvise.c:1430 [inline] __x64_sys_madvise+0x113/0x150 mm/madvise.c:1430 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd RIP: 0033:0x7f6b48a4eef9 Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 b1 15 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f6b48ccf318 EFLAGS: 00000246 ORIG_RAX: 000000000000001c RAX: ffffffffffffffda RBX: 00007f6b48af0048 RCX: 00007f6b48a4eef9 RDX: 0000000000000019 RSI: 0000000000600003 RDI: 0000000020000000 RBP: 00007f6b48af0040 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 00007f6b48aa53a4 R13: 00007f6b48bffcbf R14: 00007f6b48ccf400 R15: 0000000000022000 The khugepaged code would pick up the node with the most hit as the preferred node, and also tries to do some balance if several nodes have the same hit record. Basically it does conceptually: * If the target_node <= last_target_node, then iterate from last_target_node + 1 to MAX_NUMNODES (1024 on default config) * If the max_value == node_load[nid], then target_node = nid But there is a corner case, paritucularly for MADV_COLLAPSE, that the non-existing node may be returned as preferred node. Assuming the system has 2 nodes, the target_node is 0 and the last_target_node is 1, if MADV_COLLAPSE path is hit, the max_value may be 0, then it may return 2 for target_node, but it is actually not existing (offline), so the warn is triggered. The node balance was introduced by commit 9f1b868a13ac ("mm: thp: khugepaged: add policy for finding target node") to satisfy "numactl --interleave=all". But interleaving is a mere hint rather than something that has hard requirements. So use nodemask to record the nodes which have the same hit record, the hugepage allocation could fallback to those nodes. And remove __GFP_THISNODE since it does disallow fallback. And if the nodemask just has one node set, it means there is one single node has the most hit record, the nodemask approach actually behaves like __GFP_THISNODE. Reported-by: syzbot+0044b22d177870ee974f@syzkaller.appspotmail.com Suggested-by: Zach O'Keefe Suggested-by: Michal Hocko Reviewed-by: Zach O'Keefe Acked-by: Michal Hocko Signed-off-by: Yang Shi --- v3: * Corrected the commit log a little bit. mm/khugepaged.c | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index ea0d186bc9d4..572ce7dbf4b0 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -97,8 +97,8 @@ struct collapse_control { /* Num pages scanned per node */ u32 node_load[MAX_NUMNODES]; - /* Last target selected in hpage_collapse_find_target_node() */ - int last_target_node; + /* nodemask for allocation fallback */ + nodemask_t alloc_nmask; }; /** @@ -734,7 +734,6 @@ static void khugepaged_alloc_sleep(void) struct collapse_control khugepaged_collapse_control = { .is_khugepaged = true, - .last_target_node = NUMA_NO_NODE, }; static bool hpage_collapse_scan_abort(int nid, struct collapse_control *cc) @@ -783,16 +782,11 @@ static int hpage_collapse_find_target_node(struct collapse_control *cc) target_node = nid; } - /* do some balance if several nodes have the same hit record */ - if (target_node <= cc->last_target_node) - for (nid = cc->last_target_node + 1; nid < MAX_NUMNODES; - nid++) - if (max_value == cc->node_load[nid]) { - target_node = nid; - break; - } + for_each_online_node(nid) { + if (max_value == cc->node_load[nid]) + node_set(nid, cc->alloc_nmask); + } - cc->last_target_node = target_node; return target_node; } #else @@ -802,9 +796,10 @@ static int hpage_collapse_find_target_node(struct collapse_control *cc) } #endif -static bool hpage_collapse_alloc_page(struct page **hpage, gfp_t gfp, int node) +static bool hpage_collapse_alloc_page(struct page **hpage, gfp_t gfp, int node, + nodemask_t *nmask) { - *hpage = __alloc_pages_node(node, gfp, HPAGE_PMD_ORDER); + *hpage = __alloc_pages(gfp, HPAGE_PMD_ORDER, node, nmask); if (unlikely(!*hpage)) { count_vm_event(THP_COLLAPSE_ALLOC_FAILED); return false; @@ -955,12 +950,11 @@ static int __collapse_huge_page_swapin(struct mm_struct *mm, static int alloc_charge_hpage(struct page **hpage, struct mm_struct *mm, struct collapse_control *cc) { - /* Only allocate from the target node */ gfp_t gfp = (cc->is_khugepaged ? alloc_hugepage_khugepaged_gfpmask() : - GFP_TRANSHUGE) | __GFP_THISNODE; + GFP_TRANSHUGE); int node = hpage_collapse_find_target_node(cc); - if (!hpage_collapse_alloc_page(hpage, gfp, node)) + if (!hpage_collapse_alloc_page(hpage, gfp, node, &cc->alloc_nmask)) return SCAN_ALLOC_HUGE_PAGE_FAIL; if (unlikely(mem_cgroup_charge(page_folio(*hpage), mm, gfp))) return SCAN_CGROUP_CHARGE_FAIL; @@ -1144,6 +1138,7 @@ static int hpage_collapse_scan_pmd(struct mm_struct *mm, goto out; memset(cc->node_load, 0, sizeof(cc->node_load)); + nodes_clear(cc->alloc_nmask); pte = pte_offset_map_lock(mm, pmd, address, &ptl); for (_address = address, _pte = pte; _pte < pte + HPAGE_PMD_NR; _pte++, _address += PAGE_SIZE) { @@ -2078,6 +2073,7 @@ static int hpage_collapse_scan_file(struct mm_struct *mm, unsigned long addr, present = 0; swap = 0; memset(cc->node_load, 0, sizeof(cc->node_load)); + nodes_clear(cc->alloc_nmask); rcu_read_lock(); xas_for_each(&xas, page, start + HPAGE_PMD_NR - 1) { if (xas_retry(&xas, page)) @@ -2581,7 +2577,6 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev, if (!cc) return -ENOMEM; cc->is_khugepaged = false; - cc->last_target_node = NUMA_NO_NODE; mmgrab(mm); lru_add_drain_all(); @@ -2607,6 +2602,7 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev, } mmap_assert_locked(mm); memset(cc->node_load, 0, sizeof(cc->node_load)); + nodes_clear(cc->alloc_nmask); if (IS_ENABLED(CONFIG_SHMEM) && vma->vm_file) { struct file *file = get_file(vma->vm_file); pgoff_t pgoff = linear_page_index(vma, addr); From patchwork Tue Nov 8 18:43:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 17171 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp2886606wru; Tue, 8 Nov 2022 10:48:05 -0800 (PST) X-Google-Smtp-Source: AMsMyM5M5OglyoOQwJq1cTcmp4u9vwd/8hDZsHIAg2ihSYOovpfSejmDI3Rp/rNVP/fAcusNnLY7 X-Received: by 2002:a05:6a00:1947:b0:565:c337:c53b with SMTP id s7-20020a056a00194700b00565c337c53bmr57571283pfk.10.1667933285103; Tue, 08 Nov 2022 10:48:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1667933285; cv=none; d=google.com; s=arc-20160816; b=R2vCcTMKNkQZoSXiRA/qqyw80R768ZjdSSbHBnm/2zyDMCVA4He9qVoALHYzbyNSE+ CjKRFouWYFV7SFHyfis3o1JYwxdcKFMgSY4r8k8Vsk58XRs/19vjXSd9JUKxLqV1gsp0 jPJdCzCYoeCj2BNciEf/eRr2zPzm1MtV9USxtIjsj6XQ4eIySKDiZVbc7l2l8+5jqnMZ PrY/ZFd3aK3Dz4tK7fYx8CziMZY/ZgxihBeV+fyHqIF7lxyQ8CJYg9JUUPyYbIwDPWoI rz6INQtuX3v/NtCHPj6Tmz6c1R++YBzO+mloqFKmCUjHQU9vCotqcck5dwg/vO5Wpo1S gPaw== 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 :dkim-signature; bh=BLlH60L5DB/ktOFiwnGrQ8aIIlSEZ8HnuFFJi5Cg/+Y=; b=DlaKFmsGF87AERs4BdbwwePmGTwXDXQGl30WDEa4AqMB2cBj+HfCTj2UFnrjSL/OjR KvtR4HMD/HonZfNFGNxOwxVunDnKk0WYojNptA61C2dKX9Sn4ytrAzfUDAEmT5MGRU8Y w38u1A/I1tx3UaSoNPoJsenrwUWSILPwSNfm7kJ+J71QUCrgSTvV+ecPROnM8quddZaV oGZfOjreoQl+geXtwmNl5QczuFeGjKw3cGWEyWNMO4Yh6k2thj8fc4Gm0gwY2w3oFWq2 Z+a/YH5Qvm1LPfW2h/FwEjsXRnXUnEdgX7w6YxwbJ+OUzniKyK6gkqnlUlc9EzsTnQza EHdA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=qHBuK7zV; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id oe8-20020a17090b394800b00212fa424170si14144909pjb.130.2022.11.08.10.47.51; Tue, 08 Nov 2022 10:48:05 -0800 (PST) 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; dkim=pass header.i=@gmail.com header.s=20210112 header.b=qHBuK7zV; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229503AbiKHSpe (ORCPT + 99 others); Tue, 8 Nov 2022 13:45:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232988AbiKHSov (ORCPT ); Tue, 8 Nov 2022 13:44:51 -0500 Received: from mail-pg1-x529.google.com (mail-pg1-x529.google.com [IPv6:2607:f8b0:4864:20::529]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AEE141CB1E for ; Tue, 8 Nov 2022 10:44:25 -0800 (PST) Received: by mail-pg1-x529.google.com with SMTP id r18so14121124pgr.12 for ; Tue, 08 Nov 2022 10:44:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BLlH60L5DB/ktOFiwnGrQ8aIIlSEZ8HnuFFJi5Cg/+Y=; b=qHBuK7zVmzkkKLJ6WbtDxkBCLmKdeeWdk5cNJPUhRnwE3N3ZeV0/MIhTPiWbq9cfG7 XPT96SHCOmtN6tTUyWcYE3k29EqlaZvsaCjnhj5zT7/QLDFnlc+lQ10icJLdSAqykEWN S/GiLXnmZWA7TMpvCerNUtl8ewRolKYKVCmgBctDXAdnlP4T0Wn7eEWyAdoUGz2rhVkm qsr56LPR7FhESYAn7FHukIjm2P5ZpDYXbfZ/P90eQcxydPwvmKO9/GwUqpmMxntfHNnO wwGyMn2JQVlAGc112TdfsihKlTcZoctbWVCjjht8nNTg6VnyjZRjN3SOlazDDcvuV7Bx iPEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BLlH60L5DB/ktOFiwnGrQ8aIIlSEZ8HnuFFJi5Cg/+Y=; b=5zGHilRCFZhMdSkvq8fqe2gt4Chmd+O2/+Yp6fVzBCGQIxTxHe3t9UWKrqwAnF4T+s bi8GsFXqkVGY/rZsmdAFbHjvdfqIzkk/VlQBC2CpFzUAFnABmZv0HsqEYgSq1qo0GYXQ 0QhCKeeLISKMNRcJ77KHJm4BpAkeEcxcsPh1Rd4+TH4S2PheD5MSvyQHL45eJRtuXQTN /i3bSR+9/GK3p5YeCLiQttgAav07vlhXsfg2lVtYV8h9KmG7E6vl9tMligz4WrYKyxFn zSxRKbz4CebASJO22Jm9MF575V6rpsutGclt6u884ZLTt6KbkS6wVRCFp3Bb3IuH3wom PaFg== X-Gm-Message-State: ACrzQf3Bbhb6XKWNTc/3COco/nuzZYtNLNYNiwxORHVOQuFrl0AeYDk+ ITQqSDPrL5BvYSPj8+K94fw= X-Received: by 2002:a63:8041:0:b0:470:1cd2:9914 with SMTP id j62-20020a638041000000b004701cd29914mr23509938pgd.539.1667933065185; Tue, 08 Nov 2022 10:44:25 -0800 (PST) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id ij22-20020a170902ab5600b0017f36638010sm7210438plb.276.2022.11.08.10.44.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Nov 2022 10:44:24 -0800 (PST) From: Yang Shi To: zokeefe@google.com, mhocko@suse.com, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, syzbot+0044b22d177870ee974f@syzkaller.appspotmail.com Subject: [mm-unstable v3 PATCH 3/3] mm: replace VM_WARN_ON to pr_warn if the node is offline with __GFP_THISNODE Date: Tue, 8 Nov 2022 10:43:57 -0800 Message-Id: <20221108184357.55614-3-shy828301@gmail.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221108184357.55614-1-shy828301@gmail.com> References: <20221108184357.55614-1-shy828301@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1748954812179158592?= X-GMAIL-MSGID: =?utf-8?q?1748954812179158592?= Syzbot reported the below splat: WARNING: CPU: 1 PID: 3646 at include/linux/gfp.h:221 __alloc_pages_node include/linux/gfp.h:221 [inline] WARNING: CPU: 1 PID: 3646 at include/linux/gfp.h:221 hpage_collapse_alloc_page mm/khugepaged.c:807 [inline] WARNING: CPU: 1 PID: 3646 at include/linux/gfp.h:221 alloc_charge_hpage+0x802/0xaa0 mm/khugepaged.c:963 Modules linked in: CPU: 1 PID: 3646 Comm: syz-executor210 Not tainted 6.1.0-rc1-syzkaller-00454-ga70385240892 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/11/2022 RIP: 0010:__alloc_pages_node include/linux/gfp.h:221 [inline] RIP: 0010:hpage_collapse_alloc_page mm/khugepaged.c:807 [inline] RIP: 0010:alloc_charge_hpage+0x802/0xaa0 mm/khugepaged.c:963 Code: e5 01 4c 89 ee e8 6e f9 ae ff 4d 85 ed 0f 84 28 fc ff ff e8 70 fc ae ff 48 8d 6b ff 4c 8d 63 07 e9 16 fc ff ff e8 5e fc ae ff <0f> 0b e9 96 fa ff ff 41 bc 1a 00 00 00 e9 86 fd ff ff e8 47 fc ae RSP: 0018:ffffc90003fdf7d8 EFLAGS: 00010293 RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000 RDX: ffff888077f457c0 RSI: ffffffff81cd8f42 RDI: 0000000000000001 RBP: ffff888079388c0c R08: 0000000000000001 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 R13: dffffc0000000000 R14: 0000000000000000 R15: 0000000000000000 FS: 00007f6b48ccf700(0000) GS:ffff8880b9b00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f6b48a819f0 CR3: 00000000171e7000 CR4: 00000000003506e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: collapse_file+0x1ca/0x5780 mm/khugepaged.c:1715 hpage_collapse_scan_file+0xd6c/0x17a0 mm/khugepaged.c:2156 madvise_collapse+0x53a/0xb40 mm/khugepaged.c:2611 madvise_vma_behavior+0xd0a/0x1cc0 mm/madvise.c:1066 madvise_walk_vmas+0x1c7/0x2b0 mm/madvise.c:1240 do_madvise.part.0+0x24a/0x340 mm/madvise.c:1419 do_madvise mm/madvise.c:1432 [inline] __do_sys_madvise mm/madvise.c:1432 [inline] __se_sys_madvise mm/madvise.c:1430 [inline] __x64_sys_madvise+0x113/0x150 mm/madvise.c:1430 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd RIP: 0033:0x7f6b48a4eef9 Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 b1 15 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f6b48ccf318 EFLAGS: 00000246 ORIG_RAX: 000000000000001c RAX: ffffffffffffffda RBX: 00007f6b48af0048 RCX: 00007f6b48a4eef9 RDX: 0000000000000019 RSI: 0000000000600003 RDI: 0000000020000000 RBP: 00007f6b48af0040 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 00007f6b48aa53a4 R13: 00007f6b48bffcbf R14: 00007f6b48ccf400 R15: 0000000000022000 It is because khugepaged allocates pages with __GFP_THISNODE, but the preferred node is bogus. The previous patch fixed the khugepaged code to avoid allocating page from non-existing node. But it is still racy against memory hotremove. There is no synchronization with the memory hotplug so it is possible that memory gets offline during a longer taking scanning. So this warning still seems not quite helpful because: * There is no guarantee the node is online for __GFP_THISNODE context for all the callsites. * Kernel just fails the allocation regardless the warning, and it looks all callsites handle the allocation failure gracefully. Although while the warning has helped to identify a buggy code, it is not safe in general and this warning could panic the system with panic-on-warn configuration which tends to be used surprisingly often. So replace VM_WARN_ON to pr_warn(). And the warning will be triggered if __GFP_NOWARN is set since the allocator would print out warning for such case if __GFP_NOWARN is not set. Reported-by: syzbot+0044b22d177870ee974f@syzkaller.appspotmail.com Signed-off-by: Yang Shi Suggested-by: Michal Hocko Cc: Zach O'Keefe Acked-by: Michal Hocko --- v3: * Reverted the old commit from mm-unstable which remove the VM_WARN (patch 1/3). * Incorporated the suggestion from Michal to use pr_warn. v2: * Added patch 1/2. * Reworded the commit log per Michal. include/linux/gfp.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/include/linux/gfp.h b/include/linux/gfp.h index ef4aea3b356e..60a1c70ec85c 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -210,6 +210,16 @@ alloc_pages_bulk_array_node(gfp_t gfp, int nid, unsigned long nr_pages, struct p return __alloc_pages_bulk(gfp, nid, NULL, nr_pages, NULL, page_array); } +static inline void warn_if_node_offline(int nid, gfp_t gfp_mask) +{ + gfp_t gfp = gfp_mask & (__GFP_THISNODE|__GFP_NOWARN); + + if ((gfp == (__GFP_THISNODE|__GFP_NOWARN)) && !node_online(nid)) { + pr_warn("%pGg allocation from offline node %d\n", &gfp, nid); + dump_stack(); + } +} + /* * Allocate pages, preferring the node given as nid. The node must be valid and * online. For more general interface, see alloc_pages_node(). @@ -218,7 +228,7 @@ static inline struct page * __alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order) { VM_BUG_ON(nid < 0 || nid >= MAX_NUMNODES); - VM_WARN_ON((gfp_mask & __GFP_THISNODE) && !node_online(nid)); + warn_if_node_offline(nid, gfp_mask); return __alloc_pages(gfp_mask, order, nid, NULL); } @@ -227,7 +237,7 @@ static inline struct folio *__folio_alloc_node(gfp_t gfp, unsigned int order, int nid) { VM_BUG_ON(nid < 0 || nid >= MAX_NUMNODES); - VM_WARN_ON((gfp & __GFP_THISNODE) && !node_online(nid)); + warn_if_node_offline(nid, gfp); return __folio_alloc(gfp, order, nid, NULL); }