Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp1217356rdb; Fri, 22 Dec 2023 20:57:01 -0800 (PST) X-Google-Smtp-Source: AGHT+IFelG9AdUPnMYKm6pthd10B+R7xXGqjGoc4ls0OugoW3lg0WBbZLmpCXg6tKWt7xAkaPDid X-Received: by 2002:a50:ccc8:0:b0:554:4ed9:67c6 with SMTP id b8-20020a50ccc8000000b005544ed967c6mr574299edj.1.1703307421238; Fri, 22 Dec 2023 20:57:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703307421; cv=none; d=google.com; s=arc-20160816; b=V45VKb/78Cmyx6yhM5hRJnxvwaZgQBS0KF4Rx1kTgaNhkZf5lf6co6giAnRQhu/DdF mupxIneXXLiKQ08jLKlqitOX0lC78URLshL0RlQeLFJfYKYGvZVS6r6kmJ1PhWS8iHwu qXdELk0Scr0Q55TGry6fUazvvCMtnY83KXYWf8JQBJ9tgmEAWQXTaQxckx2IOsfNKmDC nrVLAeWTAoSGM8onO38oQnEuykslaZsfZNohzpoHO/Vto2wCmMigt9rOmSUBE6+E6fJO nai8YmEbi+thOboXN20zjKI4YbmmA6+fhCJc0Q4RheZrcXcEP+pZ1gvIOtIllXY4RTC0 nDRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:message-id:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:dkim-signature; bh=4v/LYlLycZFodA3ctHFCW6YVtoXi+WcqMYLGsHPgX1s=; fh=TNAA6iFqtzxaLE2NNOqIyiXjnOydhAVd5DlVl39JXOI=; b=E6g9oSIE6Wmb8VsO5jPN57/UntpBGeAJacukg17rUomFBjzLGtZf4hPwutsqKmVaCp UcDPSIW6nl5lZs+3+4ZqtirQENQSh+JkoeP5IZjKg/YF/o5KTdj/Vf2/U4Si4YrAzhHO PrPCIKDdRyU3AJJ2Z/FuVnP1zYZFHmqcGK5/EqSzLWTNBIs0slnyfjhWAZdGvo1itFA+ hjPxrrxks7GBirjwMVj54v0YNhw5n4bTGiogHi2ofernMnAG5wWFuRWfXDTM2Z3zeudg +4/VLWDMXX8DKAwISrzxk1xNM0WPHnlV6TJwBq485DvwUEQX1kPdVCb8WyraFKLoCvrd sAgg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=qvbmwT3o; spf=pass (google.com: domain of linux-kernel+bounces-10290-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-10290-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id dk2-20020a0564021d8200b005531cb8780bsi2473713edb.509.2023.12.22.20.57.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Dec 2023 20:57:01 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-10290-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=qvbmwT3o; spf=pass (google.com: domain of linux-kernel+bounces-10290-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-10290-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id BF2431F23922 for ; Sat, 23 Dec 2023 04:57:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B01074A15; Sat, 23 Dec 2023 04:56:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="qvbmwT3o" X-Original-To: linux-kernel@vger.kernel.org Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8570C3D71 for ; Sat, 23 Dec 2023 04:56:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--yuzhao.bounces.google.com Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-5e7b49e15c1so35985597b3.1 for ; Fri, 22 Dec 2023 20:56:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1703307410; x=1703912210; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=4v/LYlLycZFodA3ctHFCW6YVtoXi+WcqMYLGsHPgX1s=; b=qvbmwT3okTcSzLpP1Gfg7+dSpuIn92hTISDSJrolA6J+O+AzlpBAV8zcTO+4WJd5mQ 8seXEb9uPo2m7g2rhlfxdiOPJqHeoobmXWhR/Y99VYhgZMTBmm7MuY9dgTiHO1WEMzBw GH+F+bj9swy7BHfp6HBzbrbNfZcq9O1mPWq3h5XDVn/Cr8llrM6Qt+aIbOr9IEPis1Zd NsdoTX6/GKLpFT8goKioRrK2+w0Sl8h2SpXCzx3HoR3VveVEj8nn/JJKduhjAL/IUaqe KmUjcacQIZ/UE0y4PS2Sb6Q2bIEvztMXWCQS+DY10yP2vCJdr2Mj1agEdOQ0abfJ6QqM fVEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703307410; x=1703912210; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=4v/LYlLycZFodA3ctHFCW6YVtoXi+WcqMYLGsHPgX1s=; b=kXQg0mJldj9bi2f/wuIkFkRfVURNJu32HxtFPXU5MuvU9nvGBl3VeWsjH/WuR3cF5I GWOhUUgUoOF23K1BH7BgZAE/kMNBJeYM0dndq9QQDuSDv5Vnl76uL22VxLYX0xtf3ivb PZHvWZbyRg29mBOJf0DY4NmZisKZo/rgc/pwmjVO3G+5EqReqeu6wrREUgYTONUXT1W6 e928kGsxiCYvFKqW8VPzZyHtZrrNWWmonbk33OCA+8SCwjC6y5SU30A5ZodSQaGNwlAF gDWMgX6+UkKGXK0MpKbxJQ7yMMnYYbaVPREgUepJ1sXWicFkGYyZb1BsJPzLPTyDbOxo IVIQ== X-Gm-Message-State: AOJu0YzeKc9fgkopKP6m+3IuJ9E+ZAaoJPEaAblrAUGI1bzYk0jv3nN9 49iLcENzAog06X0OpmODrmfQ3/oo7VdH5U0ILA== X-Received: from yuzhao2.bld.corp.google.com ([100.64.188.49]) (user=yuzhao job=sendgmr) by 2002:a05:690c:3604:b0:5e3:c8e7:3bc3 with SMTP id ft4-20020a05690c360400b005e3c8e73bc3mr1104118ywb.1.1703307410447; Fri, 22 Dec 2023 20:56:50 -0800 (PST) Date: Fri, 22 Dec 2023 21:56:47 -0700 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.43.0.472.g3155946c3a-goog Message-ID: <20231223045647.1566043-1-yuzhao@google.com> Subject: [PATCH mm-unstable v1] mm/mglru: skip special VMAs in lru_gen_look_around() From: Yu Zhao To: Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Yu Zhao , syzbot+03fd9b3f71641f0ebf2d@syzkaller.appspotmail.com Content-Type: text/plain; charset="UTF-8" Special VMAs like VM_PFNMAP can contain anon pages from COW. There isn't much profit in doing lookaround on them. Besides, they can trigger the pte_special() warning in get_pte_pfn(). Skip them in lru_gen_look_around(). Fixes: 018ee47f1489 ("mm: multi-gen LRU: exploit locality in rmap") Signed-off-by: Yu Zhao Reported-by: syzbot+03fd9b3f71641f0ebf2d@syzkaller.appspotmail.com Closes: https://lore.kernel.org/000000000000f9ff00060d14c256@google.com/ --- mm/vmscan.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index b4ca3563bcf4..3cf7066d627f 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3959,6 +3959,7 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) int young = 0; pte_t *pte = pvmw->pte; unsigned long addr = pvmw->address; + struct vm_area_struct *vma = pvmw->vma; struct folio *folio = pfn_folio(pvmw->pfn); bool can_swap = !folio_is_file_lru(folio); struct mem_cgroup *memcg = folio_memcg(folio); @@ -3973,11 +3974,15 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) if (spin_is_contended(pvmw->ptl)) return; + /* exclude special VMAs containing anon pages from COW */ + if (vma->vm_flags & VM_SPECIAL) + return; + /* avoid taking the LRU lock under the PTL when possible */ walk = current->reclaim_state ? current->reclaim_state->mm_walk : NULL; - start = max(addr & PMD_MASK, pvmw->vma->vm_start); - end = min(addr | ~PMD_MASK, pvmw->vma->vm_end - 1) + 1; + start = max(addr & PMD_MASK, vma->vm_start); + end = min(addr | ~PMD_MASK, vma->vm_end - 1) + 1; if (end - start > MIN_LRU_BATCH * PAGE_SIZE) { if (addr - start < MIN_LRU_BATCH * PAGE_SIZE / 2) @@ -4002,7 +4007,7 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) unsigned long pfn; pte_t ptent = ptep_get(pte + i); - pfn = get_pte_pfn(ptent, pvmw->vma, addr); + pfn = get_pte_pfn(ptent, vma, addr); if (pfn == -1) continue; @@ -4013,7 +4018,7 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) if (!folio) continue; - if (!ptep_test_and_clear_young(pvmw->vma, addr, pte + i)) + if (!ptep_test_and_clear_young(vma, addr, pte + i)) VM_WARN_ON_ONCE(true); young++; -- 2.43.0.472.g3155946c3a-goog