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 55F17C71148 for ; Fri, 13 Jun 2025 15:14:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EBA796B0092; Fri, 13 Jun 2025 11:14:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E91316B0093; Fri, 13 Jun 2025 11:14:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D80066B0095; Fri, 13 Jun 2025 11:14:09 -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 B7D806B0092 for ; Fri, 13 Jun 2025 11:14:09 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 56CB814055A for ; Fri, 13 Jun 2025 15:14:09 +0000 (UTC) X-FDA: 83550723018.21.048E38A Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf12.hostedemail.com (Postfix) with ESMTP id BF5314000F for ; Fri, 13 Jun 2025 15:14:06 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Y5D3TCka; spf=pass (imf12.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749827647; 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=JF2rLNj2o6Yy22RrN3ArJe5rs1T3q2yW+wRZEQZZ/u4=; b=Wl2dHvBJVpwc4KPZ/MBMYdA8suW/htRKKe+EbT3QaG8rTnHTpXOcTEWd/z1gyVRh8j9ufR sdTPeKHWamLw91mb2kHzwHqRpq6zvzISwUXfPASEy1Yc52oaQcCAGsEpYYKVJlE7+8rGjU RXPNbZISEz6iowaHXeJLb2+2PswYAm8= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Y5D3TCka; spf=pass (imf12.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749827647; a=rsa-sha256; cv=none; b=6uKAUP2GKCkiEnfqpymZx0OrsNEo8XM0Ua0n+OdnLj67DTCkhJjwNgRzuj577aqKNjeHAY N3GC91mbe2bkT7FOIVOShWIkFrPnVK8TY+GB7pLOJXyJnWkxwuamFWhhAhNn/MxwXZ1AYJ E1j9AR1eo2nXQHAoN2A59GePUxR8Cdc= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1749827646; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=JF2rLNj2o6Yy22RrN3ArJe5rs1T3q2yW+wRZEQZZ/u4=; b=Y5D3TCkaOjyq6ZBpIwB8VNtWt7vHVAUvaJkFu7a2PtdKuE61d+a+xOB5dhi7gz0llho1Oo Tsnjt26S0PKXXxJYVa8A7tk5onV9OiLK8ODNJigDi97cSpdgg6buWyXSLum59YSUji8fPp p4wwXMOgSkjjQRi/Iy/ieRFkYGEitZE= Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-135-Pjbv0pjtNe-MXp2LzmAFxw-1; Fri, 13 Jun 2025 11:14:05 -0400 X-MC-Unique: Pjbv0pjtNe-MXp2LzmAFxw-1 X-Mimecast-MFC-AGG-ID: Pjbv0pjtNe-MXp2LzmAFxw_1749827643 Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-6faca0f2677so58806186d6.1 for ; Fri, 13 Jun 2025 08:14:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749827643; x=1750432443; 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=JF2rLNj2o6Yy22RrN3ArJe5rs1T3q2yW+wRZEQZZ/u4=; b=RHZdLKj9oy8PkrzRjWCR73lm6cyESRnxuSxEko7RwEZnbO4pjJ/wuI1Z+QXYTYy++v OSZ2PjxsCxOpuXEYEkQsSt6HgVZDB05lji96nnxVqeNC8iZFKw4iGjtUORn4+fjGyMg6 z73/f6bnZoYfE4WCUm4QnBXtSN+D6G2nzMmLQi4jF5D/RK4m+TIemRyv8XdVpNGaG+S2 72B6m0JTPf/8meXiungF8FicLvW5kcQ/Pfyk86d+AlRoSf5Y4PmnuQvrlR0U56zKSZz9 Pz1thjpl5sO58kAT/1WDvZthmeDm9B9o7E2+YFy56rK9dbi9bvTUbTB4hNZGu+bTq1Gv cO0w== X-Forwarded-Encrypted: i=1; AJvYcCVX2C7EIffeTA0i2DbxlbfklQwGl0X8EpK1hVNAJF0LWWlD7hUXXI1qtDUstd2ruMSCeaLAyPbr1w==@kvack.org X-Gm-Message-State: AOJu0Yywl9rlQCLv55h6KDixg7CCL2BADbRheqqT4YKosp5eaKpdXANV uRoKix8y/mTnv14OyLIn1SQPSzt1eOOkzVQdeSW8Maf9eKTXqX4M3O2NmNv9SUCAq2EVaNTBx9+ saHeeEL6r64uddIYlndcd0J+FijU4NOwFNwYoC0V0OUlLO8xJsvty X-Gm-Gg: ASbGncsa0G9nSilTZ4DvMM69mZhUr07h/VY+i5odE1DpcrrSeTgjDeT0kshs017xjOV agUt1U1YoLsng3+AdL1GwDKQOnnoLazgAOxyVV/ODNyrukKahjJrS9/IEOZ3hvV/jhVfiNqkpgv 9+3ZQ0JAceySB+ee9eedtfOiC2c3V26/j1p0xwIU3IVAmlqm6nyG1+QN8W4Otg/Wk2u6/OxCnmR 6nASsoU++mut3NGpLD8nxDzjWE/jgpVRwoFY2AuriBAREA9yGq585rEkjjRY9DpGoVuhhY6Rv+7 WD1L3UYdhmn54A== X-Received: by 2002:a05:6214:d64:b0:6fa:c3e4:4251 with SMTP id 6a1803df08f44-6fb3e5719d7mr46483276d6.15.1749827643455; Fri, 13 Jun 2025 08:14:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHdBjMSk7YKIV0op3TtzIelmTfKNwur0ZcJs+2tL3OQHDzunva6bG3CM8eywBoKAmCfxSjVWA== X-Received: by 2002:a05:6214:d64:b0:6fa:c3e4:4251 with SMTP id 6a1803df08f44-6fb3e5719d7mr46482696d6.15.1749827642973; Fri, 13 Jun 2025 08:14:02 -0700 (PDT) Received: from x1.local ([85.131.185.92]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6fb35c31657sm22516816d6.64.2025.06.13.08.14.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Jun 2025 08:14:02 -0700 (PDT) Date: Fri, 13 Jun 2025 11:13:58 -0400 From: Peter Xu To: Jason Gunthorpe Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, Andrew Morton , Alex Williamson , Zi Yan , Alex Mastro , David Hildenbrand , Nico Pache , Baolin Wang , Lorenzo Stoakes , "Liam R. Howlett" , Ryan Roberts , Dev Jain , Barry Song Subject: Re: [PATCH 3/5] mm: Rename __thp_get_unmapped_area to mm_get_unmapped_area_aligned Message-ID: References: <20250613134111.469884-1-peterx@redhat.com> <20250613134111.469884-4-peterx@redhat.com> <20250613141745.GJ1174925@nvidia.com> MIME-Version: 1.0 In-Reply-To: <20250613141745.GJ1174925@nvidia.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: wb8gT2GqIvQPPAnMhYP3JeVVoWhUd6v3o9jRi02AS9Q_1749827643 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Rspamd-Queue-Id: BF5314000F X-Rspamd-Server: rspam03 X-Rspam-User: X-Stat-Signature: pnmmsrh5mspdxfkmor3hi8w17itwanq4 X-HE-Tag: 1749827646-97937 X-HE-Meta: U2FsdGVkX1/cdduy71bZuzytTib8DeZLlbtoWNMTr/PSV5sV3uR5Ehr0BFis59RnvMR4Q9bYFEsKg7Y86g7smN9NCDdaLzxDJAk/u6ZnDJSFN2RYcOv9FwfoYN8nog1kUQVMnmphst3I+GUBRrzbcRTQlbUl/Oo3UxD+sm3UrC4U52kpsZinmqDsOuco1QeGgicDgzKrRyD8OP+PFoB9vWIho9e/5dvYfpBzYQQ7SahBQcMfLii2DfNXMAzv3m2mSWAj9jAcX8FIcF6/XHszPb2uumx6lPH2QBUZd5MfBMQ2afWiQNbuD1f/ftqs2prbEsbGYH5RxLGIFz04Xq+d0Yd/2Qq18gTISE1acTWRpFVxV6vLsOn9aZqHvU7VFoGc6hZwdIj/KCaTlopwLdYv5BG573HPWyb4hkLQS3kzilvqNn55/Vm2FAvvzwrmBMVVNTHIg55FahscM+Z6mH71QftpwB+C/jLUHRgCVHZqjWhVqBhjMMziLBm9t0EjB7jtgUwEgswPZiPffFDL/X+Vqawk8MY+mxSD8IgiC9J3g73R3o1ZuIFzPgS+9zveGhRYCfyLmt0CFRpNvKkO6X9EYcCAiAvVviEscPFSS8hndozRkAqRo2wHYzMUUvNhjNS7U9RBB0T77svEgw81t1DUqSpblxYt4hoa4BsyLNdLzpIAKKV2jnudtMLCfsomfbglJ7L+n7wP17+W5cnLaIELUNjto6NLk5D0CJASyTuO5gQK4/OAzxV8V/A+xcZzktP758dImLXkC3moMU2OzZWKyHPoCV/dam++CoJro3xZv0q24FMBNY12oWNwzIqbcH6yu772GjxaPT3bge9HuICWpE9vPAM/DPwrgziBUN0zpnhr/xD50OfamMvoJ4P35IEnJ5OoAlAhH+Wq+hzoeGGyvs3lMrSAtedZ+0OunXraztato5VPxW+Coag3PV40vYKkn3k7K1CT8RXHjbNGBpm hQiq3Q0W 7Q7nBnvfZdpe1mxe0JFmDId4IrexjhTYzJd/wTWV9kDBkxyEqHC9Wz6W6vkbooseu0FnikMIKX2CWQkliKtQ5bYTVpZ4OIg5MqErRHi1UddbJJiwc74X/6NOeM5ldgVJdaR9AVgDYzl6T2APjYRSpoJkg6Xm0vchYkpvX8k8B4Y5JXtqobNqHKXk/iyCnwmaKgNguZaypxAfAPwlKj3UF54bbCr+gdktBdzSS5hVYPuHM9oFMjDzRWFC1jAqA9C32Fv9guk61Ns/kR+3cxXtBIMwWPrjycGe81s7q9EhhIkHSt47FS/oXEn6EVtaOdk0otCYVbehpZcUwTq+FDvOuzMUBMa9MSdNY9PV/mUlkaFenx202byJ5f9OvQbYJ1zds8GR/eMVY0p/aGjLGPciKwcn5F8UE23N4MWNr 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 Fri, Jun 13, 2025 at 11:17:45AM -0300, Jason Gunthorpe wrote: > On Fri, Jun 13, 2025 at 09:41:09AM -0400, Peter Xu wrote: > > @@ -1088,7 +1088,7 @@ static inline bool is_transparent_hugepage(const struct folio *folio) > > folio_test_large_rmappable(folio); > > } > > > > -static unsigned long __thp_get_unmapped_area(struct file *filp, > > +unsigned long mm_get_unmapped_area_aligned(struct file *filp, > > unsigned long addr, unsigned long len, > > loff_t off, unsigned long flags, unsigned long size, > > vm_flags_t vm_flags) > > Please add a kdoc for this since it is going to be exported.. Will do. And thanks for the super fast feedbacks. :) > > I didn't intuitively guess how it works or why there are two > length/size arguments. It seems to have an exciting return code as > well. > > I suppose size is the alignment target? Maybe rename the parameter too? Yes, when the kdoc is there it'll be more obvious. So far "size" is ok to me, but if you have better suggestion please shoot - whatever I came up with so far seems to be too long, and maybe not necessary when kdoc will be available too. > > For the purposes of VFIO do we need to be careful about math overflow here: > > loff_t off_end = off + len; > loff_t off_align = round_up(off, size); > > ? IIUC the 1st one was covered by the latter check here: (off + len_pad) < off Indeed I didn't see what makes sure the 2nd won't overflow. How about I add it within this patch? A whole fixup could look like this: >From 4d71d1fc905da23786e1252774e42a1051253176 Mon Sep 17 00:00:00 2001 From: Peter Xu Date: Fri, 13 Jun 2025 10:55:35 -0400 Subject: [PATCH] fixup! mm: Rename __thp_get_unmapped_area to mm_get_unmapped_area_aligned Signed-off-by: Peter Xu --- mm/huge_memory.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 52f13a70562f..5cbe45405623 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1088,6 +1088,24 @@ static inline bool is_transparent_hugepage(const struct folio *folio) folio_test_large_rmappable(folio); } +/** + * mm_get_unmapped_area_aligned - Allocate an aligned virtual address + * @filp: file target of the mmap() request + * @addr: hint address from mmap() request + * @len: len of the mmap() request + * @off: file offset of the mmap() request + * @flags: flags of the mmap() request + * @size: the size of alignment the caller requests + * @vm_flags: the vm_flags passed from get_unmapped_area() caller + * + * This function should normally be used by a driver's specific + * get_unmapped_area() handler to provide a properly aligned virtual + * address for a specific mmap() request. The caller should pass in most + * of the parameters from the get_unmapped_area() request, but properly + * specify @size as the alignment needed. + * + * Return: non-zero if a valid virtual address is found, zero if fails + */ unsigned long mm_get_unmapped_area_aligned(struct file *filp, unsigned long addr, unsigned long len, loff_t off, unsigned long flags, unsigned long size, @@ -1104,7 +1122,7 @@ unsigned long mm_get_unmapped_area_aligned(struct file *filp, return 0; len_pad = len + size; - if (len_pad < len || (off + len_pad) < off) + if (len_pad < len || (off + len_pad) < off || off_align < off) return 0; ret = mm_get_unmapped_area_vmflags(current->mm, filp, addr, len_pad, -- 2.49.0 -- Peter Xu