Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp910928rdb; Tue, 19 Sep 2023 14:10:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH+Gk+plwNtrc+XZr/v8/MnibogbRFUCNEZhxgDvG39awSwohnpncFDOAtu7HD0UyvNsJMN X-Received: by 2002:a05:6a00:c92:b0:690:2ecd:a59c with SMTP id a18-20020a056a000c9200b006902ecda59cmr910613pfv.23.1695157808152; Tue, 19 Sep 2023 14:10:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695157808; cv=none; d=google.com; s=arc-20160816; b=0QK3nNKXGO+qb0DcHdBpD5KMYB60K3pn2W4FVOrr/q5Gc9z6eX+GtMnJLW18aOlwqc TA56MuyD/xUKHQFPCvJsGw7JWZQ0dzZpzw7h/8zW2NMRekeq2wp2P4L/9z7+2RLblB4r nIsnsxb9a1Xlm/ilI8DObATqEHS4FXxjrML7+Badi4v+M4iLav65W8Pl2xYjxGOPIsgL NyLeFtBzaDHdFlmuJWl9j/jbKKOpmmgD85YwCSd9lVBoMQhDYw37UliLbr5J0EFpIhWY BnHZz8a59mcoq/ebSvaRUIrt1OrI0x9pIigVWF9Z6zpGqmryNRYU1wpvdUC393D/rXcy jIfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=uvIEfiigHClNF0zDtmOt3K3WnUjsJmS7BEsVemoJ0UI=; fh=ZUdPqa3b98PspMrpslE0oGa+3MMTKoXcWP0TASX2zDU=; b=Yh3/kNMXiPln6ksvEberCcCBm6Xr80a2o0m8g3MeaPEh2qsubFPJBW6pib83B3pBjJ dFtuIFZgDp/kkFGZxdQ3soX94riNPCUS2wca501XLLaDrYOQSYIzmbanYqqt/9R01SzN chamtelCcUvVQ4Ey1KZGv7wwILc5/3kLMijaTzr0fYoP3hVdywfrZmbNTwX8vpOeJh+K awnDjZvW2v2tan5WKUhSNDcGgeQ+Cin/eQON6fjq3iAw2q68CPZM65VDt7R9dt3AjRs2 sFGIaDz9bwWLzbyzgXykuxsRSDDfJY8OWLxwQ1gwyzX1NE4Rgh7y5VrlYU1FyA40iGPV Xw5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=AKZrh+Cy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id o3-20020a056a001bc300b006826c8d5a31si10339589pfw.21.2023.09.19.14.10.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Sep 2023 14:10:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=AKZrh+Cy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 268738258306; Tue, 19 Sep 2023 14:10:04 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233293AbjISVKC (ORCPT + 99 others); Tue, 19 Sep 2023 17:10:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51406 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233252AbjISVKB (ORCPT ); Tue, 19 Sep 2023 17:10:01 -0400 Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2BED1BD for ; Tue, 19 Sep 2023 14:09:56 -0700 (PDT) Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-27489f78e52so3750869a91.1 for ; Tue, 19 Sep 2023 14:09:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695157795; x=1695762595; darn=vger.kernel.org; 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=uvIEfiigHClNF0zDtmOt3K3WnUjsJmS7BEsVemoJ0UI=; b=AKZrh+Cy5uVqaenOdnafPoUp4zECxc1ihqu5cBs1+UnR21b5DWIcNr+6JKv55nFyqB eLZaCn/jSPWol2xrjwJsH55vP8w/x8TjNjm/0KUICyIGzkjbI3sq7ft8fyYusxqJkN5d hunXCE9RU2Gp642dpVMjfDsuOhT3yKdtRvE6pvfDUOJwoIkTo7+BPzgXwSWMzLKOBEYc P26nuh97DLKuuhnArzKSaAHVnVBgy48W432e05W8xGZTWRQErY32XNq5v2xzflwoixet U0MRXut8OiAcfKYTOIyKiq40xQqRQfXEiVu6KV4VIU/dXQfLRJTB729fJu06mlG2V04z Y5oA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695157795; x=1695762595; 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=uvIEfiigHClNF0zDtmOt3K3WnUjsJmS7BEsVemoJ0UI=; b=OHku9DAcXlO9iUEJVmGXTf7xJfs+byoOlOOwknCshM3qHo0rZQnUNEwN6xa+ap13nu VeC1jFUTp+Z7CSl3TEaoiritmpWDwJgtxadnxveu6YvNqxBS9sNBeKfd7iEzQNXh1eOm sUHUcVrEU5TVSnB2dFmqW3WkUWchaxxc7fDw/5bGk8kjvIj9i1d6goh+vux4s1XeIcJV YHD/TNs8T/SHzebVrMAqmG6RQ+k3aUhUaO9FA36yZKW4seN3zXJ3o+A0aw1u8lW+coVt nH+ds4HW6kxFURFo8QWch5XrgQvbUlrr00Bns/hSZPNWIdbYHr1Pg2s6TIkuf7nJCDSO OzHw== X-Gm-Message-State: AOJu0Yy7aoLv9QhpUF2ThskRyFawi8DetTN+PdNwNQXPUiq0YqGB4ucP eG2+FOB/sbBIyzhbTexZbpQ9vV57WjMss7M0oeI= X-Received: by 2002:a17:90b:60f:b0:271:9237:a07f with SMTP id gb15-20020a17090b060f00b002719237a07fmr889618pjb.32.1695157795347; Tue, 19 Sep 2023 14:09:55 -0700 (PDT) MIME-Version: 1.0 References: <20230918211608.3580629-1-surenb@google.com> In-Reply-To: From: Yang Shi Date: Tue, 19 Sep 2023 14:09:43 -0700 Message-ID: Subject: Re: [PATCH 1/1] mm: lock VMAs skipped by a failed queue_pages_range() To: Michal Hocko Cc: Suren Baghdasaryan , akpm@linux-foundation.org, willy@infradead.org, hughd@google.com, vbabka@suse.cz, syzkaller-bugs@googlegroups.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, syzbot+b591856e0f0139f83023@syzkaller.appspotmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Tue, 19 Sep 2023 14:10:04 -0700 (PDT) On Tue, Sep 19, 2023 at 1:53=E2=80=AFAM Michal Hocko wrot= e: > > On Mon 18-09-23 14:16:08, Suren Baghdasaryan wrote: > > When queue_pages_range() encounters an unmovable page, it terminates > > its page walk. This walk, among other things, locks the VMAs in the ran= ge. > > This termination might result in some VMAs being left unlock after > > queue_pages_range() completes. Since do_mbind() continues to operate on > > these VMAs despite the failure from queue_pages_range(), it will encoun= ter > > an unlocked VMA. > > This mbind() behavior has been modified several times before and might > > need some changes to either finish the page walk even in the presence > > of unmovable pages or to error out immediately after the failure to > > queue_pages_range(). However that requires more discussions, so to > > fix the immediate issue, explicitly lock the VMAs in the range if > > queue_pages_range() failed. The added condition does not save much > > but is added for documentation purposes to understand when this extra > > locking is needed. > > The semantic of the walk in this case is really clear as mud. I was > trying to reconstruct the whole picture and it really hurts... Then I > found http://lkml.kernel.org/r/CAHbLzkrmTaqBRmHVdE2kyW57Uoghqd_E+jAXC9cB5= ofkhL-uvw@mail.gmail.com > and that helped a lot. Let's keep it a reference at least in the email > thread here for future. FYI, I'm working on a fix for the regression mentioned in that series, and Hugh has some clean up and enhancement for that too. > > > Fixes: 49b0638502da ("mm: enable page walking API to lock vmas during t= he walk") > > Reported-by: syzbot+b591856e0f0139f83023@syzkaller.appspotmail.com > > Closes: https://lore.kernel.org/all/000000000000f392a60604a65085@google= .com/ > > Signed-off-by: Suren Baghdasaryan > > I cannot say I like the patch (it looks like a potential double locking > unless you realize this lock is special) but considering this might be ju= st > temporal I do not mind. > > Acked-by: Michal Hocko > > Thanks! > > > --- > > mm/mempolicy.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/mm/mempolicy.c b/mm/mempolicy.c > > index 42b5567e3773..cbc584e9b6ca 100644 > > --- a/mm/mempolicy.c > > +++ b/mm/mempolicy.c > > @@ -1342,6 +1342,9 @@ static long do_mbind(unsigned long start, unsigne= d long len, > > vma_iter_init(&vmi, mm, start); > > prev =3D vma_prev(&vmi); > > for_each_vma_range(vmi, vma, end) { > > + /* If queue_pages_range failed then not all VMAs might be= locked */ > > + if (ret) > > + vma_start_write(vma); > > err =3D mbind_range(&vmi, vma, &prev, start, end, new); > > if (err) > > break; > > -- > > 2.42.0.459.ge4e396fd5e-goog > > -- > Michal Hocko > SUSE Labs