From mboxrd@z Thu Jan 1 00:00:00 1970 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 D41A4C6FD18 for ; Mon, 24 Apr 2023 01:53:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E66216B0071; Sun, 23 Apr 2023 21:53:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E15F26B0074; Sun, 23 Apr 2023 21:53:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D04CF900002; Sun, 23 Apr 2023 21:53:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id C08FE6B0071 for ; Sun, 23 Apr 2023 21:53:38 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 90FED1C66A1 for ; Mon, 24 Apr 2023 01:53:38 +0000 (UTC) X-FDA: 80714612916.26.717BAE4 Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) by imf15.hostedemail.com (Postfix) with ESMTP id B0DD3A0005 for ; Mon, 24 Apr 2023 01:53:36 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=Hg09+f7r; spf=pass (imf15.hostedemail.com: domain of stevensd@chromium.org designates 209.85.208.176 as permitted sender) smtp.mailfrom=stevensd@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1682301216; a=rsa-sha256; cv=none; b=luFp+7UJmgR+fbkYs77xcE8ooqhdLJG5fUsfqI5EiPpPEd82HRRPJtgl8EDuYJQP6l747v YqVsVDMVqp13LVQNjM195jFnxOs8EZDJ+wP0xuzdkQ0i+y4an1evGgJf8wV9LDJ8My9sC4 VEcC/VwneCLW8xOcq236TJb0Nz59FNE= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=Hg09+f7r; spf=pass (imf15.hostedemail.com: domain of stevensd@chromium.org designates 209.85.208.176 as permitted sender) smtp.mailfrom=stevensd@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1682301216; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=mLsSYolj9hPw/7JhcR3JOAVToSRQ1g/qIIEcknYaBqE=; b=Rfea/iAbFTmISrs2N9vSQxC36Q4izVMECvgfkzqqZodHwE/zB0MwzNrlpO0M6mKdg22A7o AtEg+dFMa5HHsmoLqsLzFuHAJ9JKiyD6HNLpgx0s54KqaCUQDm0egReZ/op/CXlb6SAE3Y lFGQ/hVvSirXmrD0P0HJ+vJ4KZuK9IY= Received: by mail-lj1-f176.google.com with SMTP id 38308e7fff4ca-2a8db10a5d4so37051151fa.1 for ; Sun, 23 Apr 2023 18:53:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1682301215; x=1684893215; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=mLsSYolj9hPw/7JhcR3JOAVToSRQ1g/qIIEcknYaBqE=; b=Hg09+f7rQ78MHcsG08g5ASdNMRP4s3HW95u7TVILtkDxkcl4hR2KiIxSVbWORXO3DY yyUf+Ak2UmONTtu05CQVBCfcy/o+XzT82MrdLYyNFTPczaHX1x/pJ8nf0tZm4AUMTgi+ 58aqkWr/ypxIg69SE4b/+z4rdh5yHp0+YwS1U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682301215; x=1684893215; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mLsSYolj9hPw/7JhcR3JOAVToSRQ1g/qIIEcknYaBqE=; b=VngreCG8Gt5DVtEBK7ssISYH2h9NV34b8R/8msdpS8/3oAH+oiavrRKprUjxm3NDqi euZpXwDka/MaQ3hBrPUFr6K95d9mE83dka8AFff1O0pHsQK5gSXqhYJPuptBKeyc7Rki nesuXxl69bd6118x7oYQwRmmnPrXGJSNOjDuIl1GMFVhBDVmBJynuSGKEZTObiH9KqlU K+1Ll48n8sYi7gRpzAZO5Rrru4nJjoNZamZ/0Sb7rGvqmmU9OAbojm/uhhWo0bvUkVyZ GlWpse8OtreN/bb7yswGP0j4Cw4UuEe7EAkkziWUW4S6SDL34ucpDilXr/hArXLjzwdR Nc1A== X-Gm-Message-State: AAQBX9cu5SL2cobzFfatdojU4Bi6j+kTwh7pUquAhtNpFP/KsMx10mro 6gootgpD9P/nXSGpWVmuK7Y9eHqp7RYWPrqYeRObAw== X-Google-Smtp-Source: AKy350a8lNxoW8MPan3RZwfNW/pphX9qZ4eq9urlwhpLO4FdCvTPASd7yxhI8qHgNdedit1SZUjOZdrZY4xzxUVt0ug= X-Received: by 2002:a05:651c:1026:b0:2a1:17f8:e904 with SMTP id w6-20020a05651c102600b002a117f8e904mr2226959ljm.4.1682301214861; Sun, 23 Apr 2023 18:53:34 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: David Stevens Date: Mon, 24 Apr 2023 10:53:23 +0900 Message-ID: Subject: Re: [PATCH next] mm/khugepaged: fix conflicting mods to collapse_file() To: Hugh Dickins Cc: Andrew Morton , Ivan Orlov , Jiaqi Yan , linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: B0DD3A0005 X-Rspamd-Server: rspam01 X-Stat-Signature: q1gxuohpre7jn4pkkji1y5ozyeojhcws X-HE-Tag: 1682301216-869217 X-HE-Meta: U2FsdGVkX18SPITLLmP1KxRhzd+kYFAEvamEuXU0QnY8lcE/mMw9FjIB1ElcjC9MHN0KVdbtO7QSzEg6+p3OoVM57+qRtTqE+D93LwGwe25P3NUZ2GX6w84Fu77H4cJJ3TNapLtsdOHgVlWf4wGY8k92iNIK4PTquzynxn/nTeGsXwvcNXJr1WJPVWHc2nBNAHAfhfC7W9R7p1WIrjK81YixssO0JBwddCYFwOXldQ+AEStQhssGoGMFcnOKn2z4AnFe0lJIMr7TysC4fEDQozHbz3pUm4kuUFL42axFfOAbxyVp+mIkIvt249Fi3Sqe6lq4E7Fh7BJO8KjcYHR42ziNC41/ebYsTFFeBqaRpIMorcAV+avPVsOyFG+Te5Iretl+Z8t0auKKSlhgtaAf/wXGrWHTAcw15Ye9VN4nsKUR3Q+WBXWr/JUqkHJ1jt6rUjgO9hBDKVIjXrU9zKIoXVtJHI/ZS6LY8bNrj+SxfGFpeEQtd29kBwYOINLcKSO/vCdSkjAcTSnHoI/aSA/cHVUS2mg8Lvv5MUK4nrTKFDhTYnKrKv03l8YygUkt+QkEb1qOaYVcIHBmQRuOQv2fom08gsjV7p8QBsXEuvWDCHuV3A7V0+BA+fEbwYjbvyLyb5x3QOu+fJm9YbXJxqnI1lvxZdbRrFTWnMqNqviUr0vDMuL+eb9fR5VZP0pZOjDe0UU41RUCYVo8lC4kNzY1WadjePFxeTPy3mEcn0aaoR1X96fwBFbi1z1N40dP2gDgl1xyxiYVJ1/v4b35SrTSOySuY0NcIFTOOnPnYrRo60jhou1eAZa4BHstBtdUi1sBuhs+RYQ9ohQhcJL9lEwn+PVIRAIv89YEt279LyVq6w+YMPoSmLA7UD1QiITkON1kjh+4vaBvZCCMFGuWb/ycIUEnyhRpLBuikUTx0ECr3Krke1aG326rfr84trWk0tQjl4VP0SzqYD0s6dmKmce G7dB/6Eq BjF7AFqSzXNT29HOVxlD8iZ1nUbuCktEBT0QHr/QPQe71gRdMxBdHVaDBIOjJZZ8lEgQoq0EauSPLZLr2E3tgxpB1RavSgMkbvY/wkKj5eupf6y5kCpqWH2WdwLw7cNsSxgL4DEKIVNwHD8cIaO7QRzd9SEChLQSACSg62t/0i6+JuX5flvuvj1UpkjMHAWTI9mylGg2GoK+C+NTS38svF3LzD9QmvbYGsO5wm/rVgYNkLqXk3lwer7Fu4oH5wMnoq11QO7jLSmjQxbT4x084TMF0/PKLdH4+6AjbOi2omqaMa6rfGpjd9lbONTzhyfWmcyrHLiXNSF0DJFOlWUx3aQDirew2ANxXgjIN0xJpCmPPx7o= 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: On Sun, Apr 23, 2023 at 1:47=E2=80=AFPM Hugh Dickins wro= te: > > Inserting Ivan Orlov's syzbot fix commit 2ce0bdfebc74 > ("mm: khugepaged: fix kernel BUG in hpage_collapse_scan_file()") > ahead of Jiaqi Yan's and David Stevens's commits > 12904d953364 ("mm/khugepaged: recover from poisoned file-backed memory") > cae106dd67b9 ("mm/khugepaged: refactor collapse_file control flow") > ac492b9c70ca ("mm/khugepaged: skip shmem with userfaultfd") > (all of which restructure collapse_file()) did not work out well. > > xfstests generic/086 on huge tmpfs (with accelerated khugepaged) freezes > (if not on the first attempt, then the 2nd or 3rd) in find_lock_entries() > while doing drop_caches: the file's xarray seems to have been corrupted, > with find_get_entry() returning nonsense which makes no progress. > > Bisection led to ac492b9c70ca; and diff against earlier working linux-nex= t > suggested that it's probably down to an errant xas_store(), which does no= t > belong with the later changes (and nor does the positioning of warnings). > The later changes look as if they fix the syzbot issue independently. > > Remove most of what's left of 2ce0bdfebc74: just leave one WARN_ON_ONCE > (xas_error) after the final xas_store() of the multi-index entry. > > Signed-off-by: Hugh Dickins > --- > > mm/khugepaged.c | 23 +---------------------- > 1 file changed, 1 insertion(+), 22 deletions(-) > > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -1941,16 +1941,6 @@ static int collapse_file(struct mm_struct *mm, uns= igned long addr, > result =3D SCAN_FAIL; > goto xa_locked; > } > - xas_store(&xas, hpage); > - if (xas_error(&xas)) { > - /* revert shmem_charge performed > - * in the previous condition > - */ > - mapping->nrpages--; > - shmem_uncharge(mapping->host, 1); > - result =3D SCAN_STORE_FAILED; With this being removed, SCAN_STORE_FAILED should also be removed from the scan_result enum and trace event definitions. -David > - goto xa_locked; > - } > nr_none++; > continue; > } > @@ -2105,13 +2095,6 @@ static int collapse_file(struct mm_struct *mm, uns= igned long addr, > * Accumulate the pages that are being collapsed. > */ > list_add_tail(&page->lru, &pagelist); > - > - /* > - * We can't get an ENOMEM here (because the allocation ha= ppened > - * before) but let's check for errors (XArray implementat= ion > - * can be changed in the future) > - */ > - WARN_ON_ONCE(xas_error(&xas)); > continue; > out_unlock: > unlock_page(page); > @@ -2134,11 +2117,6 @@ static int collapse_file(struct mm_struct *mm, uns= igned long addr, > } > } > > - /* Here we can't get an ENOMEM (because entries were > - * previously allocated) But let's check for errors > - * (XArray implementation can be changed in the future) > - */ > - WARN_ON_ONCE(xas_error(&xas)); > xa_locked: > xas_unlock_irq(&xas); > xa_unlocked: > @@ -2259,6 +2237,7 @@ static int collapse_file(struct mm_struct *mm, unsi= gned long addr, > /* Join all the small entries into a single multi-index entry. */ > xas_set_order(&xas, start, HPAGE_PMD_ORDER); > xas_store(&xas, hpage); > + WARN_ON_ONCE(xas_error(&xas)); > xas_unlock_irq(&xas); > > /*