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 13172C54E94 for ; Thu, 26 Jan 2023 14:42:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A61A08E0005; Thu, 26 Jan 2023 09:42:28 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9EA9F8E0001; Thu, 26 Jan 2023 09:42:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 864D08E0005; Thu, 26 Jan 2023 09:42:28 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 76ABC8E0001 for ; Thu, 26 Jan 2023 09:42:28 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 19044AB248 for ; Thu, 26 Jan 2023 14:42:28 +0000 (UTC) X-FDA: 80397215976.19.805BCDB Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf02.hostedemail.com (Postfix) with ESMTP id A6A9880002 for ; Thu, 26 Jan 2023 14:42:24 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=OVUdldmc; spf=pass (imf02.hostedemail.com: domain of imbrenda@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=imbrenda@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674744145; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=IdBADXHhMWpFibJbBuvkiZBxDqzYoKah/qiE1cNQ+Ls=; b=dPC5xuXGwIOFTzbd3uhWnOnq6kfN9GGhW1AQcCutssBG9h9ujMLQZ4fFGrC0Zo2D2EFDKQ 4GnZ3jjD1FBYEdTznvYWfeLnuwicQkASLBnZVWxyM3ESwI07lsafMNfZ3QFBMeb13yf99u 4jVPjyF2uUXBBXvttUJnvFmPuDfxE7g= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=OVUdldmc; spf=pass (imf02.hostedemail.com: domain of imbrenda@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=imbrenda@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674744145; a=rsa-sha256; cv=none; b=btcovActFhnoJiKrivqLfedXfBWwy5mTlUogbda/cIEb3Uruv07cuaIlJYKcrfqbx3gfhF G6KIaaCrIGsFTSS/l1/NZAnrLSgy9EqfwEVkrB3B8DExpsCNCNoF5GzDtrlP8A75TwGZDw QUx3CaLOgWsm5BO7yYEXz/E7VQsqA3w= Received: from pps.filterd (m0098396.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 30QDepce022714; Thu, 26 Jan 2023 14:41:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=date : from : to : cc : subject : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=pp1; bh=IdBADXHhMWpFibJbBuvkiZBxDqzYoKah/qiE1cNQ+Ls=; b=OVUdldmcd9qmn4PnV1JbxPyET16g8O2PspS9RPubvC1IHAsbBxKb2GDBeG7PQsCIkpYx 35WyY6JlZ+TYZ0ptRss4u0LgEnfcVf10pVPDkUR8nxJfRXRx9YQT7N/L1vp7h2TziVPK is+vECFkRTdyTi6hsjIzXcXZpn9fXBF3z19omNpH+x5I/bns+zlQYF4t56IV27Crz2Vu dBu2r0hHuvJzRxNaUGuBiQLjW3XJR2eBlKvUcqFHhVuOWxD2BI+7HgWvsMErMUwWAO7D RLNcFi/qesKuVrkq9+UOvti05xv/oChPGciYko50lCZU0QKXuetJbHvAqHtCaJ+TT+nO CA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3nbt6rjash-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 26 Jan 2023 14:41:57 +0000 Received: from m0098396.ppops.net (m0098396.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 30QDgU2U031500; Thu, 26 Jan 2023 14:41:57 GMT Received: from ppma06ams.nl.ibm.com (66.31.33a9.ip4.static.sl-reverse.com [169.51.49.102]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3nbt6rjark-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 26 Jan 2023 14:41:57 +0000 Received: from pps.filterd (ppma06ams.nl.ibm.com [127.0.0.1]) by ppma06ams.nl.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 30QALOTu014941; Thu, 26 Jan 2023 14:41:54 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma06ams.nl.ibm.com (PPS) with ESMTPS id 3n87afeg55-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 26 Jan 2023 14:41:54 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 30QEfoW733030482 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 26 Jan 2023 14:41:50 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7637020049; Thu, 26 Jan 2023 14:41:50 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 15EE020043; Thu, 26 Jan 2023 14:41:50 +0000 (GMT) Received: from p-imbrenda (unknown [9.152.224.56]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 26 Jan 2023 14:41:50 +0000 (GMT) Date: Thu, 26 Jan 2023 15:41:48 +0100 From: Claudio Imbrenda To: Jason Gunthorpe Cc: David Hildenbrand , Alistair Popple , David Howells , Christoph Hellwig , John Hubbard , linux-mm@kvack.org, "Mike Rapoport (IBM)" , Christian Borntraeger , Janosch Frank Subject: Re: [PATCH v2 13/13] mm/gup: move private gup FOLL_ flags to internal.h Message-ID: <20230126154148.2442e4cd@p-imbrenda> In-Reply-To: References: <13-v2-987e91b59705+36b-gup_tidy_jgg@nvidia.com> Organization: IBM X-Mailer: Claws Mail 4.1.1 (GTK 3.24.35; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: A4TWItSVRmfI8WC_S7rUiVySDbDhrL-c X-Proofpoint-GUID: 43jwyuqPw7pS9-x2zl0LdyOrqVc_D_Q7 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-01-26_07,2023-01-25_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 adultscore=0 mlxlogscore=734 bulkscore=0 malwarescore=0 spamscore=0 clxscore=1011 mlxscore=0 phishscore=0 suspectscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301260141 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: A6A9880002 X-Rspam-User: X-Stat-Signature: jhd7j9qda6ywx1fs6d4cjb8rq9jwcict X-HE-Tag: 1674744144-287246 X-HE-Meta: U2FsdGVkX18adJK332E6esObm3nmI7RmWV8IeCQUdw8jXTFem5GD9vS1Bg9jQL7a8U27IE2F/m7+9uxftrO01q5kF0ohLhX8w5vcff+8fEFZ11AgGJYtLP7i/t4ndWTSwh4Kl3ajvjPa76issOU7H1i3aAlxlJfO+/xhhZwLG2Mw4oFNNbkPLLR4j+5EqAWi8d/S7ndt1tnrVNBzgtl7DJoO+mtYHxuhYNXEfMHXMoHPIUOBMYxOPE+rddJkYUmXAT2NCyyo6Th+9LtU+dyPO8lV9TO9fpYOMaUU1C0laayiyF5MjP9mPbdvvr/H+nORgaOdWUbRAfCNAZ7VprPP6XpVP6z2tqvc6yvC4SbiQxowJ90M9pUvoXBW437LATbNSQsVeQy3T2Q1fxuoYL1RKTDgRp3j5L1eJHiRHtZYSOd4BKQNt5xVeOVHNMTJL2py+0UBSWSfkVzfr2pRNbZtvYW0jTG1wJoCnnWgr+xM+smxD4t5G5T93GWl8vpmdqt7fus4g2x87YEkdd344T4kO7i4Nd69etlW7Obp6QL8PW8yLNTQt7tWIjdJ4+eeMzGf4KY0AbZM/RwC8Co4FDJ25hnP9YUGVt+nEbKfOS7Wd/ld18IvKgaUrYeSYUIT1+7IbcobKLUortnDc35h4pxsAopQr++khQsYHuBF/paZvq4+QytWd58vOajhgWTnDw4oNd8aZQUIzuHCEoSJh2QbjIgrIfViT07h4WPusc7D+j1wikh76kMURjk3p9oiZKcCkTp193vsm/LYe5WCqdu0DklP5IvK75SNV25u1iE478uuPEER6R1Rgaftx3LLYgZw/O03j6/Vxlrq1CL2QHVdX0DOCe2SQ75YVgyAr6bMbLMKWyGwFhkrGELCu3ltkLjiGhAvAvV/nVFEMSGld71921+niv7d+1s27VtAXKO/8gfqkdccW5dtPZh/o6V+VBMcu84TQEfL5XZaBga3oT9 4MxXZeM0 1hlj0jJUNWq8caBkqC7OiHq+Bn/faGcxiraCV+z0ln88rBqmdns/jXg3GXU/FyMRQfI2knrysQe1hzoM9SmBzOgaBt1yJse86ofP5Nr6B3YMUUTJlIkmoMRo3yZmRHPSqY2T89O1lKI5T3mrXvAYZtfLOLUVVkS+vX/7MRq50m5j4F/aY5+fRm7gt2zpZxjgYcEcPCloDphqh2BdUbJf/l954A8glfzEGle7g5nM1jiMYwWnQ254T17Dy0g== 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 Thu, 26 Jan 2023 08:55:27 -0400 Jason Gunthorpe wrote: > On Thu, Jan 26, 2023 at 01:48:46PM +0100, David Hildenbrand wrote: > > On 24.01.23 21:34, Jason Gunthorpe wrote: > > > Move the flags that should not/are not used outside gup.c and related into > > > mm/internal.h to discourage driver abuse. > > > > > > To make this more maintainable going forward compact the two FOLL ranges > > > with new bit numbers from 0 to 11 and 16 to 21, using shifts so it is > > > explict. > > > > > > Switch to an enum so the whole thing is easier to read. > > > > Using a __bitwise type would be even better, but that requires quite some > > adjustments ... > > > > The primary leftover for FOLL_GET seems to be follow_page(). IIRC, there is > > only one caller that doesn't pass FOLL_GET (s390). We could either add a new > > function to "probe" that anything is mapped (IIRC that's the use case), or > > simply ref+unref. > > Is that code even safe as written? I don't really understand how it yes (surprisingly) it is > can safely call lock_page() on something it doesn't have a reference > too ? the code between lock_page and unlock_page will behave "properly" and do nothing or at worst cause a tiny performance issue in the rare case something changes between the follow_page and the page_lock, i.e. if things are done on the wrong page. make_secure_pte does some very hacky stuff involving page_ref_freeze, with expected_page_refs counting how many references are expected. the code is how it is because, when it was written, FOLL_PIN did not exist, and FOLL_GET caused the page to be converted to unsecure. I guess maybe we can make it work with FOLL_GET if expected_page_refs takes into account the extra reference? (and then maybe we could a put_page after unlock_page) > > So adding the FOLL_GET and put_page seems like a good idea to me? At a > minimum this should get a comment to explain why it is OK. > > S390 people? > > int gmap_make_secure(struct gmap *gmap, unsigned long gaddr, void *uvcb) > { > [..] > rc = -ENXIO; > page = follow_page(vma, uaddr, FOLL_WRITE); > if (IS_ERR_OR_NULL(page)) > goto out; > > lock_page(page); > ptep = get_locked_pte(gmap->mm, uaddr, &ptelock); > > Jason