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 X-Spam-Level: X-Spam-Status: No, score=-12.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E2920C433B4 for ; Wed, 12 May 2021 21:31:48 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 2D74861264 for ; Wed, 12 May 2021 21:31:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2D74861264 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 45C756B006C; Wed, 12 May 2021 17:31:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4338F6B006E; Wed, 12 May 2021 17:31:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 25FBF6B0070; Wed, 12 May 2021 17:31:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0003.hostedemail.com [216.40.44.3]) by kanga.kvack.org (Postfix) with ESMTP id E83EB6B006C for ; Wed, 12 May 2021 17:31:46 -0400 (EDT) Received: from smtpin15.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 8698C8249980 for ; Wed, 12 May 2021 21:31:46 +0000 (UTC) X-FDA: 78133876212.15.5D64CF7 Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by imf26.hostedemail.com (Postfix) with ESMTP id 7A3724080F53 for ; Wed, 12 May 2021 21:31:31 +0000 (UTC) Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 14CLP3lp050059; Wed, 12 May 2021 21:31:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : to : cc : references : from : message-id : date : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2020-01-29; bh=KSfsP069ZsUu2lWImUlK3s1lpEdSkW9cBHgHD+VeDIc=; b=aw2LIXKcsc2gWZ+785G4enbNPv5Idtwrj81M53peLkwQK+nKyq40usM3vLaJy6jYrmZ3 gA04tppSopgtmJtsM6eu384wBlcsMbiBxs97TX+PGdzZ2nkcR0H2g951d79i3XF/vWqm OYGb+SxMNHxJH05nW8BlNnM/u7eyW0o2Ki0cvrLuwf4ob8bUR+zgqU84J3DPDLSxBuXI 0aPz9lEIwNE4dovIKituyLHbjbO2iZjnp3P7GHEEgzimEUK22xDxZeWXlGawPaBWC9mi e1/DX+KIYreAjdPbLOGpMrlxl5gLLNL8saKPz5S9Vj09DvqgONoEn9kuLGzRuaZfgZbx aw== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by userp2120.oracle.com with ESMTP id 38gpnug1p8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 May 2021 21:31:42 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 14CLQiqi152280; Wed, 12 May 2021 21:31:42 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2107.outbound.protection.outlook.com [104.47.55.107]) by aserp3020.oracle.com with ESMTP id 38gpp99gff-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 May 2021 21:31:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZiZ+82GfpWzMZvFMeEQhjxawznq4CLM3uqrMO8NmezcC8SvGNc+MEeFIyFH1HYTGM8UEkkXNF1q7tTsNKTvP/VWZyC8nI/LdtYEb19bAdDHTrY1wYbW36rOc98o2BI6Q3I5YoaqmN8eb79maJlufo1B4rfATYU8XA/QOIx4ss0p1639OZBxY12q/xmAsulGaZHG6rsuEWEip1fwTghN/5QV/OGoApmkYdI/qFUPPJGBWQkGLZcPcSt+ZWGgiNWrPoNFG2fsmYmlLUOWf2RKvhYjRuDKusDkeyojcMrQZD+TaeHdiYIBORtfNFZjrFpKcazbmjJg47r9ltNxGRgFu4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KSfsP069ZsUu2lWImUlK3s1lpEdSkW9cBHgHD+VeDIc=; b=g1nZWR4Athtbt/xGEjfy2GGLR62gZF7oFJGee0Qk9Vxp6kgjIA+gOwUVhhcqk99UbPJtNGfe9a1kT1TbNK+3z4qVQHqMmac/7oxyjw15+g3eR+2nAQ6fWVpbh4sJxCAg4ImSoq1gu9xboYsI8nn+mcM+I+ib6INAGXyfhF8ZTnL7FbVM5h9dkK3QQ7vDBlU8jRr83kJt+nykJnnkC+hn3Vpk8LCxLkIxuPyZ7U9rlRYdP5QaX4qvdQYnDkRN0nozGzWsDazx2F2EQrN6+RzmFUeK9XhQCkIVg9eea350phIQbouYimzYQpFC6hMxHIOi0BJWcvU4EN47bOMHuF9Ubg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KSfsP069ZsUu2lWImUlK3s1lpEdSkW9cBHgHD+VeDIc=; b=XUXSk0tXl3VfXwBNwdK1/9RBNe7EMRwMfmQ6lKycOBtkT+8t2K7fx+T4DltGHP4zUIdJwS42wCy9x1rgJ32ulC1J6gV8XtRerqad6zI0+bhuHD5xckSk+2dkUivHUGbh5e64GiDcSYDYSz0JPa/+n0LkBOcnJJ65XL7sDg6g8dM= Received: from BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) by BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.26; Wed, 12 May 2021 21:31:40 +0000 Received: from BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::4407:2ff6:c0a:5d90]) by BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::4407:2ff6:c0a:5d90%8]) with mapi id 15.20.4129.026; Wed, 12 May 2021 21:31:40 +0000 Subject: Re: [PATCH] mm, hugetlb: fix resv_huge_pages underflow on UFFDIO_COPY To: Peter Xu , Mina Almasry Cc: Andrew Morton , Linux-MM , open list , Axel Rasmussen References: <20210512065813.89270-1-almasrymina@google.com> From: Mike Kravetz Message-ID: <6a4678a2-c6d1-cf27-cd69-1b49349a3271@oracle.com> Date: Wed, 12 May 2021 14:31:38 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [50.38.35.18] X-ClientProxiedBy: MW4PR04CA0152.namprd04.prod.outlook.com (2603:10b6:303:85::7) To BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.2.112] (50.38.35.18) by MW4PR04CA0152.namprd04.prod.outlook.com (2603:10b6:303:85::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Wed, 12 May 2021 21:31:39 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8df2eb10-8b73-4356-aa7b-08d9158d545d X-MS-TrafficTypeDiagnostic: BY5PR10MB4196: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: f7GQK6UkWO+YDr6JSQhYvZKoLWQbuU0v24AbkUzPUWtuRi8lxHfTjEYqRSurSAQzyrQtzn/QiPXBaxZh9eFBSvEE29gsqfzjCYzvi3SwRmJ1ty5zOruSbIymcsivBl9WRVXLps1YU6cACge4JEC4aMcXLKF3J4HiJntmOjESWoufErxb6Zage/94fw5RNhn2tWlnGXxC7rA8Dr9+qZ3qN12bCbqN5MbQE+giiuXVDKUk9RSrMzqlr9gP2/9+Tuk3P1/jUyAeCQhpRkUMN6T7KasN87bxoS9BOYgB++leJqgz13vfyebxSyC6zZ7HRYaWrwvW4e40OLrH2syHZpea2Q8zescEZuiCbgDuQWrizN+XbXFyTbrPpG61k1SVy9twtsJB1z+RqzIShZy3LECXRi8Ou8BbtezAUYBNC9vzCUu2eOvF+6gych7WWj5ZxfXC3h8n/5XelTmaOmS4XlXwVPWLymqTmyCFOaUZVLJaNV5JZiQVtin5N4N/LKD3owz5RDps5C8tfCpHLteabSNgBAMPekSEpwkyhRu+CxuxewYVQ4UXfHcBrHPFfqpczs4FS19exSpEc4vT+o2CQUIK9nKeIlccJnwX6Jr+hLS1zxcO1tC24k6nUl2dk6EE8UpWDh3FQyK0l/rPGdqZmdbWgE6TSLXxETp3h2ZKA0Lomr0yqnnp2ADoDK+vfV1tto3KgTg2Fg6mgw0wmso85Wfd4MaQXoB14jzjJaYO6Ej1pUg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4196.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(396003)(136003)(346002)(39860400002)(376002)(366004)(5660300002)(2906002)(16576012)(83380400001)(54906003)(6486002)(38350700002)(38100700002)(186003)(110136005)(316002)(66556008)(66946007)(26005)(16526019)(31686004)(53546011)(44832011)(2616005)(956004)(86362001)(52116002)(478600001)(8676002)(8936002)(36756003)(31696002)(4326008)(66476007)(14583001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?UHNuQWltcFhFbExIYWkyanJJZ3R6Nko1ZWxWT2hhSDgzSWsvZUJaNEJva3JQ?= =?utf-8?B?RFpaVm1UdnN2dlMwQklpWk03WElOQWJGUFFJUzc4TVZkU3d6MldTSFY4VXEz?= =?utf-8?B?WWp5bDFXejQyWDd1Qi9XOU1vRDhQUEJmWWQ0TmYwS0VhVU85R2pZamU0dlNP?= =?utf-8?B?bjRuc3pUREVldFBuekNsNzg4cGY3V0toeHB0eUNWeXhrS0JjS0twZGJZNElE?= =?utf-8?B?V29TY0pOK0tURm1CZGRyNHBUVFpNa2RsREZZSWVMM2NKU0FlWGQ2cHpZV2V5?= =?utf-8?B?THlwWFlHOEwzK1N1Sml6WERzSXd4aEx1ZnQwK1RFR0dMZCtGenl5Y2FSSW5M?= =?utf-8?B?S01HYVRROTVwOXJoZG9aRFRQdFcwYUo1ZGFIcFJhT0h0bXZTNUlVbjFtYTRS?= =?utf-8?B?U0ZoQnBXUVYxU2dUYWZ0Mm1XNFM2cjNIZWRkanFIYS9kbk5XbytJK1MrSkhN?= =?utf-8?B?T29NdXRUN3Vzbzdwbm14MVR2VStMT0hLSHNoNURsODdvSXYwWEo1dWJWQWZm?= =?utf-8?B?eXRVbVlDM01laVB2eUtZYnhTVE10NFpZaGZ1RzdJQ0dkSzRRcjlnWm5ZNThq?= =?utf-8?B?VWxybXkwOVZ1Y2Fwb2FlVUhSeDNhYU1BcXR6aTFZV0luYzJJYktJYWV6ZDg5?= =?utf-8?B?TTgyL0NtZTY1QWFXMGJWWldMZ2h0ZFNyVzc5bXUvNXRoSHRKTVA5MlVlQmdR?= =?utf-8?B?SHp3RVpyUTdlYkpNUHVtSGQyU3BTUTN1OEZnQ05KRVptQzdjRHd3MlhUbmMy?= =?utf-8?B?WjRoV1BsaTcwOThRTTJ4dHVNRUJva0orVFdtYTMxU0VqalIraFUrZTFYclFp?= =?utf-8?B?Z1VTbThNV1NYbGhmRW9VbDRyMjdveUFYNmE3aUNLZjMwVVc5bTc1eXkwQ3Nj?= =?utf-8?B?a2FJcjVyclljNGd6RmJycGkvNW1IcThHT3IvNXJuUGJoVFlVa3F2S003RXR6?= =?utf-8?B?WUxZSDJWdGNWcm9UbUxoemtqa3dobHkwQ2h5UlNURTVCelhNQVQvU2lOWXlk?= =?utf-8?B?cTJiK1F5UlZTRjNXZ0NwbG5rdGlUcTAwT0xhRW9HUUEyaXk3QU9RcmlPclBL?= =?utf-8?B?bXIvSlRlWmg4Nmt1Vmt3QSt3L3A4dFVaYXF1UUYwMFIydER2Rzk5SVlNK2xX?= =?utf-8?B?R0JuZmxTUlhabHpHeitwb3ZPZDFDZ01ML1dKVEUreElObWpSMGxDNi96cDVE?= =?utf-8?B?ZWthZWU0T3pWdVBqZlY5VFJzSG9RWk1Ya0xZS2FWOVNWNDErY3MxMVNHM01G?= =?utf-8?B?Y0ZkVWlodVNmNzdBd09JZ3JtSjdjVE4yR29XSEhpUjdoTEJxdW9YanBNU083?= =?utf-8?B?aHBCeFRxZW56ZVF4T2hFYjF6YnlIWmNxUnphR1FDajNGNFNYRDdmRkU4Rm40?= =?utf-8?B?UDUxYTFVcFRrMTM1Q0pnOEhpMm90dTRBNWpUUFJ2MDE0RVlXeDVKWmdjY3B6?= =?utf-8?B?KytIb1NLMDBUNDZHWjlmOUJwUVJDYTl0ekwrRVBCL3JxOXZvNjVLcXRTd25i?= =?utf-8?B?UW0rRXNOZWhvZzMyZWZBODJmaUNEOHpMaG85alp1aWtNY3luRmpRM05XQkFh?= =?utf-8?B?eDMzbEdxTTZGczE4bndpTVdLU0hTaHZtNFJFZzcwaXI1YStVSlNEdDhpcktB?= =?utf-8?B?SU03UHRZY1dMUG5DVFN5SUlmRFpWM09aZUM3dnc1SnE2UHZHUjlPMTU2eXZm?= =?utf-8?B?emE4U0dPS245bWN5Q0prQ0xraEZvb1BIT21yVEs2K1hjRVo0Q3Zaa3pRR3JH?= =?utf-8?Q?aOx+vVHvIlCMSzjsAr6JllcSybf4uSvDO4amXHG?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8df2eb10-8b73-4356-aa7b-08d9158d545d X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4196.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 May 2021 21:31:40.1235 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xD8Gb3ta1/BccWMER8WjasyJaVasiveG+ZJ3vIXvY3cIw1tVjxDfZzqxwXtoD3YFYbFm0dkNDZJWcLVWVvnjxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR10MB4196 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=9982 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 suspectscore=0 malwarescore=0 mlxlogscore=999 spamscore=0 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2105120139 X-Proofpoint-ORIG-GUID: JWrHHwusr2PEf-Gvfu1J61_znPE9JHEU X-Proofpoint-GUID: JWrHHwusr2PEf-Gvfu1J61_znPE9JHEU X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=9982 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 impostorscore=0 adultscore=0 spamscore=0 clxscore=1015 mlxlogscore=999 bulkscore=0 mlxscore=0 priorityscore=1501 malwarescore=0 lowpriorityscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2105120139 X-Rspamd-Queue-Id: 7A3724080F53 Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2020-01-29 header.b=aw2LIXKc; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=XUXSk0tX; spf=none (imf26.hostedemail.com: domain of mike.kravetz@oracle.com has no SPF policy when checking 156.151.31.85) smtp.mailfrom=mike.kravetz@oracle.com; dmarc=pass (policy=none) header.from=oracle.com X-Rspamd-Server: rspam04 X-Stat-Signature: g8xek4gp9sfger45oe8rpqi6w6ian9zp Received-SPF: none (oracle.com>: No applicable sender policy available) receiver=imf26; identity=mailfrom; envelope-from=""; helo=userp2120.oracle.com; client-ip=156.151.31.85 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1620855091-658577 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 5/12/21 1:14 PM, Peter Xu wrote: > On Wed, May 12, 2021 at 12:42:32PM -0700, Mina Almasry wrote: >>>>> @@ -4868,30 +4869,39 @@ int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm, >>>>> + WARN_ON(*pagep); >>>> >>>> I don't think this warning works, because we do set *pagep, in the >>>> copy_huge_page_from_user failure case. In that case, the following >>>> happens: >>>> >>>> 1. We set *pagep, and return immediately. >>>> 2. Our caller notices this particular error, drops mmap_lock, and then >>>> calls us again with *pagep set. >>>> >>>> In this path, we're supposed to just re-use this existing *pagep >>>> instead of allocating a second new page. >>>> >>>> I think this also means we need to keep the "else" case where *pagep >>>> is set below. >>>> >>> >>> +1 to Peter's comment. >>> Apologies to Axel (and Peter) as that comment was from Axel. >> >> Gah, sorry about that. I'll fix in v2. > > I have a question regarding v1: how do you guarantee huge_add_to_page_cache() > won't fail again even if checked before page alloc? Say, what if the page > cache got inserted after hugetlbfs_pagecache_present() (which is newly added in > your v1) but before huge_add_to_page_cache()? In the caller (__mcopy_atomic_hugetlb) we obtain the hugetlb fault mutex before calling this routine. This should prevent changes to the cache while in the routine. However, things get complicated in the case where copy_huge_page_from_user fails. In this case, we will return to the caller which will drop mmap_lock and the hugetlb fault mutex before doing the copy. After dropping the mutex, someone could populate the cache. This would result in the same situation where two reserves are 'temporarily' consumed for the same mapping offset. By the time we get to the second call to hugetlb_mcopy_atomic_pte where the previously allocated page is passed in, it is too late. -- Mike Kravetz