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 A1372E77345 for ; Fri, 29 Sep 2023 22:21:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E22318D009F; Fri, 29 Sep 2023 18:21:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DAC0D8D006D; Fri, 29 Sep 2023 18:21:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BFE9F8D009F; Fri, 29 Sep 2023 18:21:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id A7AF88D006D for ; Fri, 29 Sep 2023 18:21:42 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 7196FA0560 for ; Fri, 29 Sep 2023 22:21:42 +0000 (UTC) X-FDA: 81291058044.06.E7AF73F Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) by imf11.hostedemail.com (Postfix) with ESMTP id 9B57340015 for ; Fri, 29 Sep 2023 22:21:40 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="ZoDbis/z"; spf=pass (imf11.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.52 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696026100; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=cfkoZtZzWFKUAXVfkTw1XT497sJpCWkeZgREXpBpHnM=; b=R6yefacDBkBs8UIoyzf1vw530AahYnlWwbt0kv/8bih7u4Rsy5VGafZVDBTAqhU2G+hBkM q3HnHlfzPMd2zo+atdn3HqGomU2hxIAjEIKfEzZ958gN890O3vRw6OHjkYrTopODgznUHy KHIsiawfoi5/by03p9VghEhv0CRg/GI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696026100; a=rsa-sha256; cv=none; b=rv0Ed6JUuZoBrlDhVVUD/nruO40J6dny3bDqgfIqbUJZJ15l4pyhIntxiDiTv2wVs1FLt6 P/jFZ94zYaaPJQqPPta62TrJy46yldwzzeogD1IjSjWbL3FSY8n1Db5n3CmuP0q5trqPWp H5xQ0RJ015I5kNly6I+ohgPGNB6sWNM= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="ZoDbis/z"; spf=pass (imf11.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.52 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-40535597f01so148087945e9.3 for ; Fri, 29 Sep 2023 15:21:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696026099; x=1696630899; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=cfkoZtZzWFKUAXVfkTw1XT497sJpCWkeZgREXpBpHnM=; b=ZoDbis/zng5DmVeDQE6XIx/NFei6G677lrDA9+zybDVV227T0iwz864eZ1cYmopTP2 e9OaUPM0dxc4TULHu1co843MGm2f2GIjQnNRXAuHLlFEycNEu7pimQhqpsCHKJmyBBoP jBrtAOZgIc3kdbNUnI43Vac+tAkepgeJb3hED8nkRlFNnYQcEgoNxAAanlwL7O+wWk5R C1tr7QqTko2JRx9G62ZDMQnr1yjy94Pxwj1vAyeBDD+g+SZMRHjjLOj9jPwnpI0AXBtN 70Ldr+6MQPIWA3psLg2fv3RG9wxwLE36z53FZZflfWCMIALI/mwUaAol/K9IvVERdvRi NmZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696026099; x=1696630899; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=cfkoZtZzWFKUAXVfkTw1XT497sJpCWkeZgREXpBpHnM=; b=TxNROyahKZCmfTZ5N0WsyGUQ5Z/I3ydnwiXjBjrFUJkTSW3pvxZaI+qoqJO0N/mjEM YpzOzxys5Wbb/z3Kgp+Z0Q8YqfThLElmYmcQYKQQYjqBYgMSR+42waoroiu+lC3LjZxs g09I5UXUZygmDTLJfKhoTjTeILpKF38EzQGi7GCVQ3pNhbafTTvAto0jeiFdXnG1MusF Opjzf5A2k/Xcidy3YaO/FNS8HB8rapDSv2KYyfaJHPJrYbCHdayjvEWpUM1aEDi/pukX n5czVAwRgUSSVwXyVnRdgStc0mos/7+idd8IJD1k2SSeePXsb88mS3IfieI22A/uZwTK zCzg== X-Gm-Message-State: AOJu0Yw5A9Tw+lgE997bDDSutoACj2zRsLOTBcVUh1FGjHYLe/hpnYgi Dqp+3c+wQAiVeCJYEFRpy6M= X-Google-Smtp-Source: AGHT+IHp2979RLyG4yl77VxrPIQnP1hdoLxq2OeMecv7VB0xcyOg9BAYIcfLgRQ7K1Hy9R295KDl3Q== X-Received: by 2002:a05:600c:2145:b0:401:c338:ab94 with SMTP id v5-20020a05600c214500b00401c338ab94mr5418356wml.29.1696026098484; Fri, 29 Sep 2023 15:21:38 -0700 (PDT) Received: from localhost ([2a00:23c5:dc8c:8701:1663:9a35:5a7b:1d76]) by smtp.gmail.com with ESMTPSA id t16-20020a5d49d0000000b0031c5b380291sm22386092wrs.110.2023.09.29.15.21.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 15:21:37 -0700 (PDT) Date: Fri, 29 Sep 2023 23:21:36 +0100 From: Lorenzo Stoakes To: "Liam R. Howlett" Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Jann Horn , Vlastimil Babka , Suren Baghdasaryan , Matthew Wilcox , stable@vger.kernel.org Subject: Re: [PATCH v3 1/3] mmap: Fix vma_iterator in error path of vma_merge() Message-ID: References: <20230929183041.2835469-1-Liam.Howlett@oracle.com> <20230929183041.2835469-2-Liam.Howlett@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230929183041.2835469-2-Liam.Howlett@oracle.com> X-Stat-Signature: b1pkmy655asegemeefpincpa3jazeh57 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 9B57340015 X-Rspam-User: X-HE-Tag: 1696026100-48496 X-HE-Meta: U2FsdGVkX1/5E7MIwucdgCNOLcKYJtMtncZHF9MVnS3JVrdO1m3pKPYMrmm7jgIVLZ0hWSgmDVtOEyuSXyT7xZZo4+qHzGJNuSSCjuOeGxEy9lhlLhliZZxAVkBfP8sezYe7DWKm93sCq6xNQf8o8NHMAIdXHukub6netU9V0FdmJZDwady/fPG2Lq96EAPBwlOC96dJj9WImXTxVqyJFDqwe7S7HCejGeS5gqWH2wCPdc1A050u6usAAiG54dmXrZk5J8KpOAgq1qaBLLpAlUn/oeIHSgg+cH9d06UcCAJ/5HHqwEBVE68hXgepTT5w6JVPJ8RPmMvcQDTGmYUrLixC9LYDKj1ifKlSrHRqJio6CykcEHfz+8aGpytS6KdaMJiZtaSCNhrEOJDTxxwviGFIq33Lx9Nn7/GIXMRVeZsZsDZhDobpC/SbqZvROE/U37VClx79JbwF6USFQ5JkAEsUeEo/cdgNuefiDlqzQv4A/Y07IIyS/8KqiiadhhezFHMzaUY7jT8rqbO3HGE9Eq1nIqEFFpFPvgeMOOuAcCqkouRPe+HOkcG4FFcs5o4N8sfaDqlpfIZ0AI3VZekwKIqZSOU3IC+ZtKfSXEW1qMnN63QzIvEdCYviFp4Z/QVNq8p12BMlYcv8A5KeFB3t1U3L24DkAQBz0C/PXgMXwVndqdQoDL0sxC6Nd9e36+3VyqAIDoEG8SGlqfRXgJ9d8No/CVJv7FeJBoHs7Va9tvRaor33Oi8ZD0SFzyOMZ7NO1PCaQEjap4M1ieIzGgUUkoQnl1+/QqsSRZIjpkb9ZesFk2RQ7lepsQA2tv5ecEt1BsYIqvZyEK5bp68FMlrwTQqvpLx6gaJ7ALMjkBclAYXE9ywzH0SJwZHDRVhb80kn8VzLwzyCkOgWlxVs36eA72FJl5jeElvveWQWVAxOI8iokf6TJ8Nm0Nme73QwsqwYV4sXosvPQ57QCz8EDtg RCKtIRgV IH5DThTJ9gFhtAqejBQqkJALrLOdss2Uejl45QAWHrtOiRzV3XJ7uQEKRH6Ah5OCCkw52mthuUHjITwPyIOiyEKoWwzH3YOAqhdiWT4BhzJ0ckKyKa58SZmmNFTjBU0SJgisOJ2DCOtX1Y6Gse9Zy32PzGwK3vRFUoBx4o5/oZVin2anwZoconPF1LkJTshydEHQulDGILtnegmxiB8Upsqw6qaCw/wosFd6AO0CedWOj6+9JU3bFmrFCmpEvMA6A1hTqDyENnGkHtTqX72iQ9yim3FIhhAquRarWMwKz3eHLVUo0Ni3VYYhuvR8mRgH1gSLYwf6CkUfRKA2q6o8Tgg4vcSpAFbGGAobKVVrXKUH4OemK7SxXYu1J1tE2bPwkgG8QjdCLhO++kJA59HKM5kz2BInKqevrfp8mxIVm2gtBmbzNeKPtMZfGo6Dux2LO+FQfn5PGYJj/JWwSfwvOucbIVVQbd4d5VlwrN16QsziQ/a96i8Lez8aXcWAn4SlicEcEeM30dkIUXVHkHAnlG+9aPWOSRVVOH47O 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 Fri, Sep 29, 2023 at 02:30:39PM -0400, Liam R. Howlett wrote: > During the error path, the vma iterator may not be correctly positioned > or set to the correct range. Undo the vma_prev() call by resetting to > the passed in address. Re-walking to the same range will fix the range > to the area previously passed in. > > Users would notice increased cycles as vma_merge() would be called an > extra time with vma == prev, and thus would fail to merge and return. > > Link: https://lore.kernel.org/linux-mm/CAG48ez12VN1JAOtTNMY+Y2YnsU45yL5giS-Qn=ejtiHpgJAbdQ@mail.gmail.com/ > Closes: https://lore.kernel.org/linux-mm/CAG48ez12VN1JAOtTNMY+Y2YnsU45yL5giS-Qn=ejtiHpgJAbdQ@mail.gmail.com/ > Fixes: 18b098af2890 ("vma_merge: set vma iterator to correct position.") > Cc: stable@vger.kernel.org > Cc: Jann Horn > Signed-off-by: Liam R. Howlett > --- > mm/mmap.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/mm/mmap.c b/mm/mmap.c > index b56a7f0c9f85..acb7dea49e23 100644 > --- a/mm/mmap.c > +++ b/mm/mmap.c > @@ -975,7 +975,7 @@ struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, > > /* Error in anon_vma clone. */ > if (err) > - return NULL; > + goto anon_vma_fail; > > if (vma_start < vma->vm_start || vma_end > vma->vm_end) > vma_expanded = true; > @@ -988,7 +988,7 @@ struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, > } > > if (vma_iter_prealloc(vmi, vma)) > - return NULL; > + goto prealloc_fail; > > init_multi_vma_prep(&vp, vma, adjust, remove, remove2); > VM_WARN_ON(vp.anon_vma && adjust && adjust->anon_vma && > @@ -1016,6 +1016,12 @@ struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, > vma_complete(&vp, vmi, mm); > khugepaged_enter_vma(res, vm_flags); > return res; > + > +prealloc_fail: > +anon_vma_fail: > + vma_iter_set(vmi, addr); > + vma_iter_load(vmi); > + return NULL; > } > > /* > -- > 2.40.1 > Looks good to me, Reviewed-by: Lorenzo Stoakes