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 0658FD5B85F for ; Tue, 29 Oct 2024 01:23:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3F9916B00A7; Mon, 28 Oct 2024 21:23:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3A9A16B00AA; Mon, 28 Oct 2024 21:23:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 224026B00AC; Mon, 28 Oct 2024 21:23:14 -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 EEA2D6B00A7 for ; Mon, 28 Oct 2024 21:23:13 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 8B6D2C08D8 for ; Tue, 29 Oct 2024 01:23:13 +0000 (UTC) X-FDA: 82724890920.05.66F45DB Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by imf20.hostedemail.com (Postfix) with ESMTP id E5F721C001E for ; Tue, 29 Oct 2024 01:22:41 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=mpT0V6sM; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.218.41 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730164817; h=from:from:sender:reply-to: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=0Pd/2awWqtbCHGt1Ojb0KNsaKCVd9iXgu3rqnut6BuE=; b=I5IcpAjQ6c1Qaw06cNbXrR/qZtp3qaAeTRo7OhD01J3YUgkCBUFUudXT63cr0O/ZOeu4BB liwV6g0jAk7MElO1CvOQ8bKLAMsFMI80uu1Be98cL0Jn12N7z4f2tE/2Uu7Blzgld1C4AG gJqhJ/TkoJ/8B0JmmudMby0ZDTZ69+8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730164817; a=rsa-sha256; cv=none; b=NJvAMJUyZWXirMuS9WFK7HG+AkgxlQD/LLK2BybXn4t4PAlMVWx1DyDtzOR36JXipIR2d2 mSDgCDcmjjfr2ti6PxJ+TQXxomIjyHgr4dEWQrmZbNMlh95cMg+AXx0qkvsj3/+51qsxRZ Ev3wK+0Vz3dt5MhEUgaUdPDF6WHK97I= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=mpT0V6sM; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.218.41 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-a9a0ec0a94fso686899666b.1 for ; Mon, 28 Oct 2024 18:23:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730164990; x=1730769790; darn=kvack.org; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=0Pd/2awWqtbCHGt1Ojb0KNsaKCVd9iXgu3rqnut6BuE=; b=mpT0V6sM9oEeThVQiFc/+sNr2m3G14EsMhThBh78E0zSOYQh7L8TkMVbPtiwXvuS4R ZKabQ3e9l5ddaSa0/5o2MxJ37u8AxbT4YuvClS4IZ11gQ1LbpvVJ3LXm2/0wiyxeq3G1 NZqOCvYeVAETz6Evw8E/Jm2nE0PGMGD7DyLgX97FH+ZArsHq5Y76V8nCdWJFzVyRLvNE r4ZXRvPBkbaV8+KOpcwymZmca8ud1YexQ8TCKp2Ktui/qYc69VhplIcMoXm4n+N+alT+ tU+XWlWyY4a4o9BiO46bU9OS6/e48SYpaMPsU7k+i6j6fsGSjCaOelfVC4LH3O70TBU6 BdVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730164990; x=1730769790; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:to:from:date:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=0Pd/2awWqtbCHGt1Ojb0KNsaKCVd9iXgu3rqnut6BuE=; b=KSloje2zG4zYemkouRlS3M6zqFiCdJGKPvQMz5u9lGp8ptUqDjfJj98Cxzx5oDcG0y viKQxfqo/hKQtWQW9K74ZiaeTahvM2W6RzwdFO0T0/N2ewjvQTPBvbik+4Z/iE/04pKI b5JheKTFDrSKA219yTvHhmmmKMQGdzfIffuwwibPTRD5EEp61k87IjAj69FZmCOtPxX2 U6GgjSICSrC2Im9A0fRBLISAm/JNLo6IyYWS+sD5su4s5HYr2tl6QIK0+stkIS6rdt+z q+rmlR18D/wrHQvmlwmqZew+CiiHSCG+Uzz2JZDb9xelqJR+sgQVOsdM8XiGu2K3d55c N5XQ== X-Forwarded-Encrypted: i=1; AJvYcCXcMwmzr/R69e7+4WUtSHtAM531O11Sxb2zUx4U86lTJcjVk0BAk1RVTUimUkCdhkYjOV3cKVlVww==@kvack.org X-Gm-Message-State: AOJu0Ywjk4QfO/ZZw4jLi69QcFAT2oSpZme0lCxMm/7Z6itvL+dN0F4G q/t8miR8R7gC4N6DiYFQcLdrJQTHIj22vqrCndzdXgpckl+E70QAe4mGQw== X-Google-Smtp-Source: AGHT+IGcqjjy0mEacWPkyxVbTGuktdzXP9wWStryEoqcMoRojJUolVODLJAcsy2fV+ObMVIIw6fhTA== X-Received: by 2002:a17:906:6a09:b0:a99:ffdb:6fef with SMTP id a640c23a62f3a-a9de61cef8amr1140224966b.46.1730164989786; Mon, 28 Oct 2024 18:23:09 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a9b1f0698c0sm424343266b.95.2024.10.28.18.23.06 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 28 Oct 2024 18:23:08 -0700 (PDT) Date: Tue, 29 Oct 2024 01:23:06 +0000 From: Wei Yang To: "Liam R. Howlett" , Lorenzo Stoakes , Wei Yang , akpm@linux-foundation.org, linux-mm@kvack.org, Vlastimil Babka Subject: Re: [PATCH] mm/mlock: set the correct prev on failure Message-ID: <20241029012306.v6xvugskjbd5gnvp@master> Reply-To: Wei Yang References: <20241027025629.14715-1-richard.weiyang@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20170113 (1.7.2) X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: E5F721C001E X-Stat-Signature: xni5yat84n5i67f949gei18gt8xx63ho X-Rspam-User: X-HE-Tag: 1730164961-969636 X-HE-Meta: U2FsdGVkX1/s0Ypp2tRfZEe5MZi7zwpX0ASgTyYudGf6AQ+QFNJZvzDylD/4OxaknXTYMUX1Kzt7B85+uo6lYOKt26hsscPo+OiJERh9L4QGfXVgJJ31SKC+F+Im9idqV6AjCEqk7dEXROtplBymUWpiTSfAq8UbHZ1kwn5O3/Hn3+kQx+Jn2UQcHOMn2lxhOlTz7xZtJ2dOfQGBJvAtNyhbCfOyRXs4Ss81PN23XxDHKx1/eJxEBmDaIPKXI54rVufaqeJtyB+V6EHAa3MWmMkN0RlIUFDNbvDpqJxB4tOruqML9CtmvfR45YAfAu5b9cELQRWruW+jSsqJYwcLIfj6y5/rHlWkL+XDUFD8Qfi/09rA62SRH6VxpGrdYQQpGgokmHtZj+Am8bKPfuk7ik5Hv5nGqilqQG0Awh0sMNSJUU59wZxU3OXTCH0rfxzRPOPhS+UrE5iy62PnLhpz7Jqrtx0D4Q7TqpTA7vkDt+ZCHJb8yxBepTfiZyRUinYE8t6AhvhHV1AJdYzCvPMc/M3/qczQ0XmiX51C9C0EkinKeqaHJyezGGO9tn0h31PJ+UWGo5VmNoVJFA5ZZL3ksrxujBIj8FKVvFV049l4KgNrqNVlaVbyCnnyb+FJnX427EUySZPkKN6wSq/m9ZnavIuytC7MjhPsZYRReNAXb6siX/XgsVvjfBJbiydDvUWhTuwb44sQq4I5/Lse+TfVwoKPc2dkX2vxknh5l+Zke4MEa6fX1ATDVk2k0hYpQI9euoHb34y947XYCAnVyixFJVcuxpf7P7Sry1GJa3Cx1ng0VbxfttORpQaDOWOY1vmRBRsHEliWYRWvj+ha01V3Rp6znYZMbpDslIeIDZk8iwaGSZc5iHMxsU+sdNK+xzUV0Am2nrbWYu9ij/kzgS/C3itQ+NPS9qUVssQQsrEWF6G5mCIjcxZWCCwV7lMd09uRU03znhewe9F+bAK5mQK QGwPFuUd 8S4wbYg+zBImVmev+2Zv1bm3+FhJIrT/MUi57tKld09f2JLekvymKlRbc2eKpHm78toUSqZrXoLL9IKP60K8vo0Aj/i7kgN5l1BywHFIzOYDl1H1yIC/EcfRg0dmlBylz1oYzKEaSijWxYs/RP3s5GfqRvzje7swI308ot8LGvNQ/YvcXTrQhbIYz5cimrUTSTzFQqXlxwqYIAgixqUzocGGg3tcBcU8GCyBbgyalrfdaXNlCRzuWrh9rsAASos+eeuEilhNKguywhIkM+jk2xyblvj9ErwIdcUv+4X4lGfRLxFQkvsA35T9tYf/OnT56J9+asTYLaoB1295AfkCHSfICi4eGRRBR6jq/ZvqA2FYCuMWFLT7X8ZNvezOJrU6+5x43cpejduYj8y8K2HfkYrpqb8VFVfi8bEHppzoo6dEha3vSxai/62+YjNmjOtwVUk03jzqtFhjBzaveS8opADbimmHDosx1VfyqC015t1Lcjh0sM7ouCyLhZtEHBnfmL8d/Us3g+Q8Vg7DUw/VXrmzQ2/lzS9Phw4YW6KrXAfeuyn7vimy1bnbiPxO740CHJOk5mHH8vV9MFTKlWjlnTI01g5wdHPXvR9TUTGvuovXDOLkY1iLTnnqrEX+NGu5un7l94yniTR3qNupKaHNyZw00TAUbKs5wExIKezEZz/EAxqANI5GGvDU3PCqdk7BsSPdE 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: List-Subscribe: List-Unsubscribe: On Mon, Oct 28, 2024 at 11:07:16AM -0400, Liam R. Howlett wrote: >* Lorenzo Stoakes [241027 07:43]: >> + Vlastimil, Liam, Jann as this is VMA-related. >> >> We really need to bring all VMA-ish files under the VMA MAINTAINERS >> block... will maybe address that once things around that file... calm down >> a bit. >> >> But please cc all of us on anything that even vaguely relates to VMAs, >> thanks! >> >> On Sun, Oct 27, 2024 at 02:56:29AM +0000, Wei Yang wrote: >> > After commit 94d7d9233951 ("mm: abstract the vma_merge()/split_vma() >> > pattern for mprotect() et al."), if vma_modify_flags() return error, the >> > vma is set to an error code. This will lead to an invalid prev be >> > returned. >> >> This is a great spot, but this commit message is missing critical >> details. This is only meaningful for apply_mlockall_flags() which is both >> ignoring errors AND assuming mlock_fixup(), even on error, is correctly >> updating the prev state. Which is imo wrong. >> >> So I'd _add_ a bit more information here like: >> >> Generally this shouldn't matter as the caller should treat an error as >> indicating state is now invalidated, however unfortunately >> apply_mlockall_flags() does not check for errors and assumes that >> mlock_fixup() correctly maintains prev even if an error were to occur. >> >> This patch fixes that assumption. >> >> We'll also need to backport this, so a: >> >> Fixes: 94d7d9233951 ("mm: abstract the vma_merge()/split_vma() pattern for mprotect() et al.") >> Cc: >> >> Needs to be added, and make the next revision [PATCH hotfix 6.12 v2] to >> make it clear this needs to go to 6.12. >> >> > >> > Signed-off-by: Wei Yang >> > CC: Lorenzo Stoakes >> > --- >> > mm/mlock.c | 7 ++++--- >> > 1 file changed, 4 insertions(+), 3 deletions(-) >> > >> > diff --git a/mm/mlock.c b/mm/mlock.c >> > index e3e3dc2b2956..8c3f9cf8f960 100644 >> > --- a/mm/mlock.c >> > +++ b/mm/mlock.c >> > @@ -478,11 +478,12 @@ static int mlock_fixup(struct vma_iterator *vmi, struct vm_area_struct *vma, >> > /* don't set VM_LOCKED or VM_LOCKONFAULT and don't count */ >> > goto out; >> > >> > - vma = vma_modify_flags(vmi, *prev, vma, start, end, newflags); >> > - if (IS_ERR(vma)) { >> > - ret = PTR_ERR(vma); >> > + *prev = vma_modify_flags(vmi, *prev, vma, start, end, newflags); >> > + if (IS_ERR(*prev)) { >> > + ret = PTR_ERR(*prev); >> > goto out; >> > } >> > + vma = *prev; > > >If we move the assignment *prev = vma to the start of this function, >then we can just get rid of the "out:" label and return on errors. > Maybe not, if my understanding is correct. vma = vma_modify_flags(, vma, ...) vma_modify() merged = vma_merge_existing_range() return merged For example, if we merge left, the returned one would be the prev instead of vma we passed in. Even we may release the original vma. >But the v2 seems fine, >Liam -- Wei Yang Help you, Help me