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 5555DC77B7A for ; Thu, 18 May 2023 00:39:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8E541900005; Wed, 17 May 2023 20:39:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 893EF900003; Wed, 17 May 2023 20:39:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 73577900005; Wed, 17 May 2023 20:39:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 66B00900003 for ; Wed, 17 May 2023 20:39:03 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B949416071E for ; Thu, 18 May 2023 00:39:02 +0000 (UTC) X-FDA: 80801516124.29.1A0A1BE Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf18.hostedemail.com (Postfix) with ESMTP id B79F21C0004 for ; Thu, 18 May 2023 00:39:00 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Wqbnx7kA; spf=pass (imf18.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684370340; a=rsa-sha256; cv=none; b=UgbHFNvBY6aTUlZv9Os9fOAqc6hWH4EMh8v+CP2Ku3StCvchJ5dGuaC+y+YDVRU9XySSb2 48grXGVbPYAp3JDFTJlhf4BKt0bBrnIofVLLrglHcnji/UYxU1AY/sFpcFndiM5ahKDpal Fyyz+F6M8ghAawhbIZSXAPmwc26/sqo= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Wqbnx7kA; spf=pass (imf18.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684370340; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=4YL4VRHTTTP5ymMEYgQSrzIpXej5X99LgoW1v1ye3Zo=; b=bfgEqkJi7nmJXWHN90BSWykd/3SKPI9f9mPHppBl0mi2XnIiMfroNfBN6YT/xmW9hER/bA 5UnHRh4XjemID0nAW+EjvRxhJhFuqlKrxhX8pkzDeyCroyKoXpk7fVq2xyDciNVqSTeRvh pRdOpbue+YAKW3SQUiQeViIwijrKxYs= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1684370339; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=4YL4VRHTTTP5ymMEYgQSrzIpXej5X99LgoW1v1ye3Zo=; b=Wqbnx7kAus3cyNZY2qtkbydf2GDi0c9pUMCaGiAO/XFO1ZOrtmx/q12gkDpLeQIlfpTtfj 0AidY7BNKRz7Dqcu8pTuDfYVnNQOGTFXwiUXf6pQdZHVNgSe5fbqKDz8gK2vQMs60gNF26 1EO9jEizTXvB10zSqZlSxhk1kUlfh3g= Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-266-EGLXOk-pNGaxg88pWqeHNQ-1; Wed, 17 May 2023 20:38:58 -0400 X-MC-Unique: EGLXOk-pNGaxg88pWqeHNQ-1 Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-3f386bb966cso530601cf.1 for ; Wed, 17 May 2023 17:38:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684370338; x=1686962338; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=4YL4VRHTTTP5ymMEYgQSrzIpXej5X99LgoW1v1ye3Zo=; b=Aax5TCZOMh4pbU6ekBjJrprTmmxjUVkDhXO8Duny1nsLufIZ/gHgktREUroe7XqX5t TteLO21aKZ5gNH6GOMGrj6mqnoXOB8ayiTMAuRInRt+vF1Wv0qOBMZFaTh2KGGq3pfbp d80xU3YRmMvEa63sN83XQgAqoDzShHEsuxJN1NiUMqL/MQ/ohFvfT4e3Nq9QDYAmCFLJ 6I3En0qRv9MWVzWfgMm/IW+mUz+8tQO7aMtj1m9aI4SlFIJ0Q7wcrGVtbhhBHWhHQWvD VlWJ5Qlvw0k+xsofUhxH540lbcmWMW3Q1sdi0MHLxw2PM9L/zdBYB4SFmojqwFzlr4sO AA1Q== X-Gm-Message-State: AC+VfDxgSH5iGqMebvr3AA7mP0/ONWPU/Bw3Kk/B6EFWwr01Iewp2SxI xEFxi9/VmdO7pAT7APyQZJK0VmK9LhYvu4ZnbftsTl6kQ/Ff9lSZKpaR59gCrUdvVl+pMYuPgZP a+CS9bvc6lyw= X-Received: by 2002:a05:622a:8f:b0:3f2:38d:5c84 with SMTP id o15-20020a05622a008f00b003f2038d5c84mr8822024qtw.4.1684370338067; Wed, 17 May 2023 17:38:58 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7xEBvgfLNxrHvwCcc4+e+3bU8VzdS24qg4PYgcL2vQQ97RhLwMyNNEDb++wV/iW7UOoIUE2Q== X-Received: by 2002:a05:622a:8f:b0:3f2:38d:5c84 with SMTP id o15-20020a05622a008f00b003f2038d5c84mr8821999qtw.4.1684370337824; Wed, 17 May 2023 17:38:57 -0700 (PDT) Received: from x1n (bras-base-aurron9127w-grc-62-70-24-86-62.dsl.bell.ca. [70.24.86.62]) by smtp.gmail.com with ESMTPSA id j17-20020a05620a147100b0075934be7618sm40063qkl.71.2023.05.17.17.38.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 May 2023 17:38:57 -0700 (PDT) Date: Wed, 17 May 2023 20:38:56 -0400 From: Peter Xu To: "Liam R. Howlett" , Lorenzo Stoakes , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Mike Rapoport , Mark Rutland , Alexander Viro , Christian Brauner Subject: Re: [PATCH v2] mm: userfaultfd: avoid passing an invalid range to vma_merge() Message-ID: References: <20230515193232.67552-1-lstoakes@gmail.com> <20abea10-5307-498b-b9df-8f0b2fed1701@lucifer.local> <20230516164907.5bf2qe7nn5bo7iaa@revolver> <20230516225251.xwmz2oyebo7k56ys@revolver> <20230517225142.xbchqdmp6ma5wzkg@revolver> MIME-Version: 1.0 In-Reply-To: <20230517225142.xbchqdmp6ma5wzkg@revolver> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: B79F21C0004 X-Stat-Signature: ga1p4tmu7roq87551p4nbgo6yucju7os X-HE-Tag: 1684370340-54938 X-HE-Meta: U2FsdGVkX1/TtsV3Ae/ZSAm+kkcCszI9/mDl/7mcuJXPnSC/AuhCuewakflrmFnhL5LOGpUpJy2RhBFrMbuCLOsGj8FSFmqR2KxQsQgdLE1xUWxKZWfJFmroCTRc0KFbccMraUv6DAfIAw6mZQgJbEmTBd4nuBuoaUHUoEegCi652KatO6WBbGOFHi/TTqcWgXYENvpq/slV8v2zB7Zt+bYLbthd8IEFksZOas3Awv8HKklUkikddGnXzGryN5X8q+ZcK1eGixg1ioIO/jJlqO3AWkpGX70+hhlNEsDLw2CXzaldaimWDXqEUIdYUXt2JJ3HJ0ZBZQRElmTyD5BgwtxiD1qBRJLmhFzJGDfwPgaE7nkcn/5Y0BGdjvWa/MGPtK7glSWbOY1KMyqy6Q8cQ/cFkfSU5lHmRE6AF7ASDygrlkBgldC0dOJr4LUrFx6tWVghsYxMJmULwTi4wj89W8IIZqwrjuz88x8/Gq3J5oymxZGmSql+zshWdrmcL1yDMfuSpGzbyf4SwoumpN8bpUKJHBwQWzC+3UlItCaZfwRBZGJykeuvn+qpfZ6R2yKu1YuS9EHVX2sm+IGUvkuBFSsPMx5qD+pE/ClyF377kxHugHkR/2ATHWU0cueP5gItHGnmstlyQ2VlgcJ2btQHeWYQxmbCsAZ+YIXVIVwV+4f23Xv8DEItsGn/DWIXXZvOsX6oSrjI9luSJ9vLyyf72YDOnimZyzCD9rq9jAGbUkhPjL4OgAWt+8w6O92/NtsI2JZDX2aPYKRwXT4il2o24xHO9KwpQOd/dhBeSuqg8+pqHS9QbbutgaIN+wfjiM+rUXVMZ/iljKkWRJrkZuUEmrWmCDWpPSAaCciouT5ech7FbZIv5Pz6LbXpA1Lt9dEc+kZLi3V0AT49l/rM/lhJIUgaFSSjUaEQh6LPxJfbIEhKu7mSdh7ZUJTPtkz/2LiO1MY4KOIVe7auS+rPI3y 6OAqvUpq qTJ4g2/gIvB9Oa9HCRca4BGaYl/SLxsjnRwEmIVd4YK+08lbEJlMkRvGCqe6qf69DjaQi/OYpjDU4lzCdD+EE0Zuu6IKZ+GX9dLA/Y/aD0vU3Tws1qr5nKsPhn3/4R/OpRUcDtss1xhzy10un7/dNPRtlO+nMc14VWXViwqz7UCgb9k9X4y7hBQLq5iZ701CkYVrDMbTeRisrxfVoZ5vplLgNvzvznBfmzJrGpCY2esbh5rS5ldsdtRSBb23EHIdOmQV6wVJacmCda3wCX/o/cX4kcG9a+asY1PWTD22uJCS4AsxcuS7cGySsuJNIWj+D6Dl8v0oWM8UWboHIi8Xr1htbOnKoTEm1zRSS6sDejuARPOfzzJwbpG8X+PRp8q34gI8/xMN7ClMjW2mBmLt31DyRdedhBz3Wrl0Q 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 Wed, May 17, 2023 at 06:51:42PM -0400, Liam R. Howlett wrote: > > Yes, IIUC that's what we want because vma_merge() just handles everything > > there (including split, or say, vma range adjustments) if any !NULL > > returned. > > I don't get your use of split here. __vma_adjust() used to be used by > split, but it never split a VMA. vma_merge() is not used by split at > all. I guess maybe I just made it confusing somehow when using "split" here.. I meant the vma range adjustments when vma_merge(), so indeed it's not really a split, but it's still a logical split to me. To be explicit, taking example of the uffd unregister case that was essentially case 4, where part of PPPP will be "split" out and merged with NNNN: **** PPPPPPNNNNNN might become PPNNNNNNNNNN case 4 below if (prev && addr < prev->vm_end) { /* case 4 */ vma_end = addr; adjust = next; adj_start = -(prev->vm_end - addr); err = dup_anon_vma(next, prev); ... } PPPP is adjusted here (where I was trying to refer as a "split", because vma_end is less than before so part of PPPP is cut out): vma->vm_start = vma_start; vma->vm_end = vma_end; vma->vm_pgoff = vma_pgoff; NNNN adjusted here (where the "split" part merged into NNNN): if (adj_start) { adjust->vm_start += adj_start; adjust->vm_pgoff += adj_start >> PAGE_SHIFT; ... } I'll remember to stop using the word "split" in these cases in the future to avoid confusion. Thanks, -- Peter Xu