From patchwork Wed Oct 5 01:17:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Kravetz X-Patchwork-Id: 12998813 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 DC1B2C4332F for ; Wed, 5 Oct 2022 01:17:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B13E88E0002; Tue, 4 Oct 2022 21:17:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AC2B56B0074; Tue, 4 Oct 2022 21:17:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8A0226B0073; Tue, 4 Oct 2022 21:17:28 -0400 (EDT) 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 5D1678E0002 for ; Tue, 4 Oct 2022 21:17:28 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 2BBFAC04CF for ; Wed, 5 Oct 2022 01:17:28 +0000 (UTC) X-FDA: 79985132976.07.86BCBAD Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf11.hostedemail.com (Postfix) with ESMTP id A353040014 for ; Wed, 5 Oct 2022 01:17:27 +0000 (UTC) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 294LO9t0028545; Wed, 5 Oct 2022 01:17:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=sSdnMNf8RMgoglcDvLHleN/fJJI1quWUHBajDUzj5eA=; b=Avm90mSxS3ylNU0ZOpD3uF6D0rSn5UCMn5KYcSqhhTSfBqChgQBT7/FO8OdgNJKLzeiz aV8i93HGnV5gcIgpJhun+mXi+1DogPcH3AnJ/uHVy6VhLnHO4L8bjdM//JimgqjBk4g4 x/0GF2pbvvvaC9AjYnWbIoVdk1Qph+ayUgDz5BMcrrPIGFYgr2RQ8gM4Hkrgk9rFe34/ LQ7jkSVn0XqsnqDOT4GwB+DLCrEg52ADwz4V/bJy7TfKkryLwhfvg8Sc+hKMHNeGYRZb oQCL5pbFTKHXc8MfAq5jqxQYuAZGTak2FSV8MitJ5QE3UUviyv24X4NFwrzFM8V0UfxQ 6w== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jxdea856p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 05 Oct 2022 01:17:17 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2950Aixp019871; Wed, 5 Oct 2022 01:17:15 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2176.outbound.protection.outlook.com [104.47.56.176]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3jxc0b15n9-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 05 Oct 2022 01:17:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SPeKqM6/esk8s1j29qirAA+heTzeSmD0hgMMXU2cRxkl53cNuTtxq8swm/3Kv88ZMlgJk9BknJyxoNy6He01eIAIK7dS0aeU4Mrj2dXeWHg3/wZGWT+KgcIYLEhx6nv/Yq8sdqKgJ5RsPfmZ9vS0+3MS5aAyPN+Iclpsh6I+3yWxWVixyfjPe7TtNW7D1/mJho8anP4sFqmDZnFAB74pdCfPz85cK0+areBbENpkCiq3k4Xv+aZ2lDBE3vkJU3cVQ4+9i4S4C+q9HmpZjs9P5cX/xVrGSRvyTP44l2zUcCnsAxisrnrBexg560CIyyO0a3vYX2R2TobqYxvqpB+6tg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=sSdnMNf8RMgoglcDvLHleN/fJJI1quWUHBajDUzj5eA=; b=buPsqG40CU0ZMRkaZZkLJwjHoMRIMgJjzawN9nTRCVOt6d3renrMrufsnSaxvtSTa4KwPJsAsHzjldslyh3KWqQaPIV/tz8oHeAK36mwI7fK/zObMBa4RbeVGKdqGIYL/iPaHo2O9uX3u1nOoBILb6YYXTj+rOgke18rikeRBgREhFetL//kSL9jTy7U1WThVbLGyEegWRGHnECJ8IbFo+9eq1D+izFBjLqNBbtB0V6YZLqe9sr4TcDuOPRYyBFEu2+IlNGIY2yvwToVgOkNc+z9cv2IQmudjf1iKNiOX0TfUvKTGn8Bh4NhTcC86+nqR6p80ej/Vla412G83sZzGw== 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=sSdnMNf8RMgoglcDvLHleN/fJJI1quWUHBajDUzj5eA=; b=z0ztOhMmFO+D0XzN3Got95fwOkN+mstiRTCbRjjm8GGh1fAuwY26PC7lr0jlDkQ3dPzulAqUBjMtnX5RwezXJYYpK0zpvUqg9QHoDUAIlL/q8tyN4qlvHwPZ/0nemmty5z88DW159g/5Ay/UcGxB78EaUmeZhr1i7V6i1tDF+GQ= Received: from BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) by SN7PR10MB6286.namprd10.prod.outlook.com (2603:10b6:806:26e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Wed, 5 Oct 2022 01:17:14 +0000 Received: from BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::dfde:308:42fe:6c5a]) by BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::dfde:308:42fe:6c5a%3]) with mapi id 15.20.5676.028; Wed, 5 Oct 2022 01:17:14 +0000 From: Mike Kravetz To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Muchun Song , Miaohe Lin , David Hildenbrand , Sven Schnelle , Michal Hocko , Peter Xu , Naoya Horiguchi , "Aneesh Kumar K . V" , Andrea Arcangeli , "Kirill A . Shutemov" , Davidlohr Bueso , Prakash Sangappa , James Houghton , Mina Almasry , Pasha Tatashin , Axel Rasmussen , Ray Fucillo , Andrew Morton , Mike Kravetz Subject: [PATCH 1/3] hugetlb: fix vma lock handling during split vma and range unmapping Date: Tue, 4 Oct 2022 18:17:05 -0700 Message-Id: <20221005011707.514612-2-mike.kravetz@oracle.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221005011707.514612-1-mike.kravetz@oracle.com> References: <20221005011707.514612-1-mike.kravetz@oracle.com> X-ClientProxiedBy: MW4PR03CA0308.namprd03.prod.outlook.com (2603:10b6:303:dd::13) To BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4196:EE_|SN7PR10MB6286:EE_ X-MS-Office365-Filtering-Correlation-Id: f0d77006-0151-4d51-c31a-08daa66f5601 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dP7X6j6VEclVFXBeuhKUeitEDqEb+KskrxIJ01CS3tBWXhpNkXkruTiBZ0ZvNgQRQCFXJHDX7v2PcFBhQVV36YIZs1g/ZEZE+kGsLWyK9BSky/+PboP42PSnyqfQx3vmwWhCqz/LlgvKVzXVi72pZQX0xobybSfgf9gh04GYToh/zqvbKpY+PG0vQ8jf7K48vLfdFEOevlKT+TvIWNwIe1+yF7/OmnN+kSbeR7lm+a0EZMSA0Oqp6RzUNmht1zSYQ6Tc76EMKHFZV/G1KVMpBBZB7F62+6X3DH9sSJHtk08hERv5V2wGiDuhdFk0YGLC7+B0Jl7fMlrcq1QKO6WKZFYOhx0+KNCFHsB21FuFc1fBJSsYfIFbs8Q44E7Ap+E6+Y4Db0Fh7hkJAKq+oz7fvi5E3Vr+Hko/Xu5tEqQfj/b7ZM4n7LiQ2lRRC0ICjw1pmeZrOEKSNMUmHQbsk/XU1U+btMnp1BllWd7P6uAVR2DcNXUQTr9my4em8Rlg84QlttI/r+2Y5QcNEp/IdE69F8V/n6q5yTnlsMEwv6CDnQmNg+tw2HrNp+yZqOcrSPjvj4wXUSr5DVtcpENHaThfebCDogpQBKZpyu3L1Zor5RprLJ6VezgCIG2SdwDPDBGCjP9TQNkXaibNKHj7YEopdwCu2T8oGsts4SiEFHEM6ZQMt2s+nnHW14lW0MfuVAItaz6Zsn+W6mJsWXMPIGq48Q== 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:(13230022)(39860400002)(366004)(376002)(136003)(346002)(396003)(451199015)(107886003)(6506007)(6666004)(6486002)(478600001)(66946007)(4326008)(66556008)(66476007)(8676002)(36756003)(316002)(54906003)(38100700002)(186003)(1076003)(2616005)(86362001)(26005)(6512007)(83380400001)(41300700001)(44832011)(5660300002)(2906002)(8936002)(7416002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /DxDzyBLTvOMHUszeJUF3SjFstE5pneyuSiH1D1QMjLm95uHbQdJUCZNyw8s5DClH8JVa/ov94X3yIi2nmP9s+0yqLW5GDYDlv1zf4QA3gNKz3rsxwVWlLYnuL3iG6h258DCI/dbpKo030QeRa+h9SNNYjARsHhBlZ7CzyRDafREliIEFEaE+fxqJcP10U71li36mOAr/SKjtjEn/9SHmXJ/crT/XhA/gcoGo1g+/u5+Qy72vGN8w2+78FV4CnyWAl2QawEEbZaYUdSZO9e04lTwfxim2VOER1yRHNHY+4YdF/L8LFoFJfJkqoF8dEFdA2ZpcZrzt+zJD02IARWaDSsHxUC6IchzyPeOMUT9HJP5izKQB937VidultmjKvalhicevWhjucR/UwxQcIdwtFHJInMn5emRlpwhuP6FCrDrvKLU4B4fsdhG2zTi+EjFQr0j2hTEIVVkfIJYHtTXCToVGSh+oMgEnaQzBwVfE1hc3IL3bMhd5ck5xlwhSCnf2DQ28ASD9+G3XwTkWgwu2GOJtJRTU3Ukn813XWy1KR3+vyxjuEqgq17VdDzTFn/SkQVWPpozZBcqI7l3FrbujKiR11HFOF+53z4wlwsP3eD5UO5idzpuUt5ronn4yNEKUktT6xBbC+S3jkREj6ro+RKaQh5p2Kk9+VWEyct5zCjvZoYHiP6DQytw7aFoeuyKLV1kRVWyJyVYCNtiqteDV34mrkfsTBuVYkx6LSL6V/PEUSFL1Pa+/jQS3r5E1LPntW2r2DEOEUtQHJ9fLVNM6ampzON698o6DznmaJx/NDDIxH5x6QhMASXFjoDJCv1okAT56SGVfyLSfzpSKsp4wvdSRxY+8bqkao4UBAbgV+B3udXTgjA9jZiwEPrlab70Tr4IU3Dty9yGG70fI/t1GvBpxBTVqvMMl9bWoC5FvBjKz9sjuuZVYS4kw1Dq5LPDAVX/mRZNwKnGXBzaYNvZZNl9aGA3FfCxkVsRtp8+PaTqQobCdnchaA42CSRe5L1De0DtccYPs8kaKs5jIDik1zh4QxgPW66c/InfekxzSRNcm/39NKCZPBYrD+Osqv07nVssl57H+qduSYHYU0L2J7Nbet/F26MRwjQjKUErwZjy1/mPpMli1+KNamkb+3B5IgxGqaU1imzn+TFamQVNgf3k8W2g3jdtMtmq8O5W5eVfIe52YL/i2TFXzfaKmlAql1kWPT8ybJEWrMY3DCc5nYpE1wWIV2VxA8zstdBLEhoiVSAxUB/j/SnFRvf8jysjKCykjsawPwvFjy/KhkCeyse1H6bCqz7Lmw58IU/a/LY9xduJqyQbLrlXxaRcjI/CsRdmF31I7IexGrLaDSUR9T7IQOkEEAraRNCYANeQuUj2Z8DyEYb9FCwzaEcKSrl2nAtdmRiW14VTqDdijAGL2+5oTQxRLt+JnDDEay5WbLa0K2Sh1DXnmLysa77PoaBcOQQX1i3lWWZNvI9EY0mWHQxG2FiqFNx7DhUONZLMCuFiZSAry601yBKoRp8E2gkQhdgzGf2sua1sWNb8uKIYZiq0UdbdEBd9kq7ZM7N+8Ud+QSCPOWs8biCBKPVmGntVjLv6omYY5iJMLdSwYY448g== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: YH4VHAm9nmRQ7Mx8HxvqZ5y7K6O5kT/3KrkiQYLg7ZXA6JO9GpUhMu9M5HXqAOgDN3GoTl4deEoDXPFT9/oe0H55akLw79okPRS7ugyqf+msWwPVM4mDKa0jJVT5CWCA9aoj81bTQ21tmwwY/6auBKRIvz52hoG+VS1unSngYkS9D55qfB0PK97d4OueVlZ4EMzdlAUrqYFLGC/TbptdbfN5I6VX8J0Y48gjX5VHf6DjfjR+HxxjZxQS2XRy0G9WWbD+cPQBmrTVs39llOdPemIuRgctDUaVKvE4ugdsfEKEJkZeRrl8gvkTw2gWXNPxKaKlMLomCRFF+u6qnWnKbnV4ufkGAvcJYZJ4yaDZaUQK1WSyKjf1fcLXO+b+iOCv1pXz+rQvOPPXqZQR/K+GKjS6qyU6MP+16IIWbE6wGZHqWost9mSkMbbfY4huxdb9CsOTr71ldkIK11stXljdm4hxsg4PaP6M9/iOWsScGqQrUsHeg8kZ6aXUAFdIdaX1BmZcoCpLKclAJ7QfMYUTRVx9UjzuF6PAT0Gcr0rZjm3FMgCoMq066C/23Krc7eYkmWGRK4exOTe+OTEGEm4TO9YICEjA+IN0zfne0nUfh3jKGqOJN+3Cu/2w12yV1hn2iM3BJ1bYYXS670w17QIPBO84n6llIObJNB3O3myDoied9b4Ic6eGtdE6Pmh5vcm+ci6Wevg8QtxQZpPPzPqpKZh4++EMw7OQqZ06b7wsEsRWs5V1ycY12hV+av8n6Bfj6IVTRS87FDS3LlEqWAGHyq17i5MtY1YkElXnmm1/5Qg+cakFYD90yXv759n0Dy+5tQDYNy2CA4Niq6uru4r8xrey1Jl6ZSrwbsWNLzdrDUZRRXwJcEL5K56sVWFNDjtYpqfHYuVFWEaE0K5CbrRCfnXS7EGIptQJR9LwE7CvnjoNi2+l7yOjSz0iWunfeISNooTFJTK1n+ThmcMWH/zyHw4N2Blcv6gNhDPxiTnSb0TbdRHRimdZnfnZIoxrCX+4In2zt5EInci+IeC3TJYY2cbJXLEX99Ukk3QiqeEDtL2lgXsumLR4/PvK+ZOA7MEFZVNP0G/yX++O93qNGuhqkmqzSTr2th8G/VniU4rTc1noACsDyZZ0bisJ6c9h3YXnNum3ksSUOp3SZD/uDD2FLrEmEUXgsezoKKSQPOeMGuz393WZ8nUhWzrf1wE0IhA8pzjL71IO2jIipyqduqvxlDTLGZV8oUXxP3VG3yMMOHYlNuLczoiYRqRIiwqOJ8+CHbb3gIgHaoZjZA/1C9Bh5G+Qp6PKfWRr0j91WJS+G+m+y7m6HJ+F0/foQepp0FrXm79AAmY1IsPnspCwud77ej77kx4MUpmgVgX3Bm49mP5Ri9MC+e+VdVY/IFhOkdRU9Q0cqgBUxrCMv6Ddl6zfPQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f0d77006-0151-4d51-c31a-08daa66f5601 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4196.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2022 01:17:14.2288 (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: pIacByGbtjrPNpXBCc0V2SyrvNSohXauWZtcqje1Dq153IniD62/GG+PYOjrTIACBIe2lRIFGK2GKXOAp9jAtw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR10MB6286 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-10-04_09,2022-09-29_03,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 adultscore=0 mlxlogscore=999 malwarescore=0 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210050007 X-Proofpoint-GUID: vk7LKm-eZ3HVIWbCoj_LOMiCiSOXH9TM X-Proofpoint-ORIG-GUID: vk7LKm-eZ3HVIWbCoj_LOMiCiSOXH9TM ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1664932647; 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=sSdnMNf8RMgoglcDvLHleN/fJJI1quWUHBajDUzj5eA=; b=mnRDE2P34PeB8DrvuI7/rmOS4rzHgrwH7I+5oj9k7ygRV5hHMD31d7rLrtTXUtoixodnhT 9cCBKqFOxSHVuM8800DtSSPDPx8x0fGFAvdQ1MnPfMTjtW7/oHyj9zCvyYy4+iq/8V9VqT 1PR8QeGAH/VaNuUHBhOOPBYQvZ5LulE= ARC-Authentication-Results: i=2; imf11.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=Avm90mSx; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=z0ztOhMm; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf11.hostedemail.com: domain of mike.kravetz@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=mike.kravetz@oracle.com; dmarc=pass (policy=none) header.from=oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1664932647; a=rsa-sha256; cv=pass; b=tEgaZG/+PG4UuiW5YkGuWyb1d4quE13OFbEsZP3WKhjDvlTD5aXx6TxT3bGSsgc4tOl2Mn KgN8SZE0G+m6jw8qBNjH2UrdF13dBfRXkiyLUfHu8/DySEWWM8HsxcZuqpiLCPqmbZSM83 0q9na5eidt7K6bUvxMNqe2zNS8NfC1s= Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=Avm90mSx; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=z0ztOhMm; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf11.hostedemail.com: domain of mike.kravetz@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=mike.kravetz@oracle.com; dmarc=pass (policy=none) header.from=oracle.com X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: A353040014 X-Rspam-User: X-Stat-Signature: 9ojnas4sdxm7xs7cugp1wnn7f3ygzsdg X-HE-Tag: 1664932647-772694 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: The hugetlb vma lock hangs off the vm_private_data field and is specific to the vma. When vm_area_dup() is called as part of vma splitting, the vma lock pointer is copied to the new vma. This will result in issues such as double freeing of the structure. Update the hugetlb open vm_ops to allocate a new vma lock for the new vma. The routine __unmap_hugepage_range_final unconditionally unset VM_MAYSHARE to prevent subsequent pmd sharing. hugetlb_vma_lock_free attempted to anticipate this by checking both VM_MAYSHARE and VM_SHARED. However, if only VM_MAYSHARE was set we would miss the free. With the introduction of the vma lock, a vma can not participate in pmd sharing if vm_private_data is NULL. Instead of clearing VM_MAYSHARE in __unmap_hugepage_range_final, free the vma lock to prevent sharing. Also, update the sharing code to make sure vma lock is indeed a condition for pmd sharing. hugetlb_vma_lock_free can then key off VM_MAYSHARE and not miss any vmas. Fixes: "hugetlb: add vma based lock for pmd sharing" Signed-off-by: Mike Kravetz --- mm/hugetlb.c | 43 +++++++++++++++++++++++++++---------------- mm/memory.c | 4 ---- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 4443e87e814b..0129d371800c 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -4612,7 +4612,14 @@ static void hugetlb_vm_op_open(struct vm_area_struct *vma) kref_get(&resv->refs); } - hugetlb_vma_lock_alloc(vma); + /* + * vma_lock structure for sharable mappings is vma specific. + * Clear old pointer (if copied via vm_area_dup) and create new. + */ + if (vma->vm_flags & VM_MAYSHARE) { + vma->vm_private_data = NULL; + hugetlb_vma_lock_alloc(vma); + } } static void hugetlb_vm_op_close(struct vm_area_struct *vma) @@ -5168,19 +5175,23 @@ void __unmap_hugepage_range_final(struct mmu_gather *tlb, unsigned long end, struct page *ref_page, zap_flags_t zap_flags) { + hugetlb_vma_lock_write(vma); + i_mmap_lock_write(vma->vm_file->f_mapping); + __unmap_hugepage_range(tlb, vma, start, end, ref_page, zap_flags); /* - * Clear this flag so that x86's huge_pmd_share page_table_shareable - * test will fail on a vma being torn down, and not grab a page table - * on its way out. We're lucky that the flag has such an appropriate - * name, and can in fact be safely cleared here. We could clear it - * before the __unmap_hugepage_range above, but all that's necessary - * is to clear it before releasing the i_mmap_rwsem. This works - * because in the context this is called, the VMA is about to be - * destroyed and the i_mmap_rwsem is held. + * Unlock and free the vma lock before releasing i_mmap_rwsem. When + * the vma_lock is freed, this makes the vma ineligible for pmd + * sharing. And, i_mmap_rwsem is required to set up pmd sharing. + * This is important as page tables for this unmapped range will + * be asynchrously deleted. If the page tables are shared, there + * will be issues when accessed by someone else. */ - vma->vm_flags &= ~VM_MAYSHARE; + hugetlb_vma_unlock_write(vma); + hugetlb_vma_lock_free(vma); + + i_mmap_unlock_write(vma->vm_file->f_mapping); } void unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start, @@ -6730,10 +6741,13 @@ static unsigned long page_table_shareable(struct vm_area_struct *svma, /* * match the virtual addresses, permission and the alignment of the * page table page. + * + * Also, vma_lock (vm_private_data) is required for sharing. */ if (pmd_index(addr) != pmd_index(saddr) || vm_flags != svm_flags || - !range_in_vma(svma, sbase, s_end)) + !range_in_vma(svma, sbase, s_end) || + !svma->vm_private_data) return 0; return saddr; @@ -6883,12 +6897,9 @@ void hugetlb_vma_lock_release(struct kref *kref) static void hugetlb_vma_lock_free(struct vm_area_struct *vma) { /* - * Only present in sharable vmas. See comment in - * __unmap_hugepage_range_final about how VM_SHARED could - * be set without VM_MAYSHARE. As a result, we need to - * check if either is set in the free path. + * Only present in sharable vmas. */ - if (!vma || !(vma->vm_flags & (VM_MAYSHARE | VM_SHARED))) + if (!vma || !__vma_shareable_flags_pmd(vma)) return; if (vma->vm_private_data) { diff --git a/mm/memory.c b/mm/memory.c index 1b994a55f176..81cc75e71888 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1685,12 +1685,8 @@ static void unmap_single_vma(struct mmu_gather *tlb, if (vma->vm_file) { zap_flags_t zap_flags = details ? details->zap_flags : 0; - hugetlb_vma_lock_write(vma); - i_mmap_lock_write(vma->vm_file->f_mapping); __unmap_hugepage_range_final(tlb, vma, start, end, NULL, zap_flags); - i_mmap_unlock_write(vma->vm_file->f_mapping); - hugetlb_vma_unlock_write(vma); } } else unmap_page_range(tlb, vma, start, end, details); From patchwork Wed Oct 5 01:17:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Kravetz X-Patchwork-Id: 12998814 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 17989C433F5 for ; Wed, 5 Oct 2022 01:17:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A53088E0003; Tue, 4 Oct 2022 21:17:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 93F696B0073; Tue, 4 Oct 2022 21:17:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6CBF68E0003; Tue, 4 Oct 2022 21:17:31 -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 51F366B0072 for ; Tue, 4 Oct 2022 21:17:31 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 1B084A05B5 for ; Wed, 5 Oct 2022 01:17:31 +0000 (UTC) X-FDA: 79985133102.23.514943E Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf16.hostedemail.com (Postfix) with ESMTP id 9E73D180010 for ; Wed, 5 Oct 2022 01:17:30 +0000 (UTC) Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 294Mm6lX002201; Wed, 5 Oct 2022 01:17:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=1fGw6ZiJdBSoHEs52AmDn8XF8K9WUB38JQ6DHlTAuQw=; b=g9yVKxzVDTkjmQdd1qj/WLVUyEGmoLKRh8gLDLp9EHlRHMsetK8YueaewkrbUU15xImk 3yGu7HQfFv3+bTy8voE/pMp4EcdIrSpxn5wSVNYmttPvFs1sH9Vez+gKu2JZ7ukw0fz/ 4y2L+0CoUCLhGsirMpjB9tSdiU4pc/tscz8Aj+81VghxW6V+Zdaowht/edPQJ2qZiKVI qbyz1jSsH4nm6DXekC4JPyvZQBp5I9R6w5BaNJWMiZ+ngwSn7LJHu6XJ/y+ah4HQcDdz UG3VexZ04mRYGdvP8eWfG6n8gW78IWzvUOpzUVIgjYghCK3Klhd6iKd5TTJO6lDWAkY9 Xw== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jxbyn7sys-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 05 Oct 2022 01:17:20 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 294Mnv5r019865; Wed, 5 Oct 2022 01:17:19 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2177.outbound.protection.outlook.com [104.47.56.177]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3jxc0b15nw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 05 Oct 2022 01:17:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Tqq0uLXCdYpbb6iE/MrTq5AJTfKCI9vwv+rCXNptUnUMHu14Oj95LGQ5XCeRZUK0WSzJwv5FPtGVCgZd13XnbiR+0P6R6qMly2wWYkH+YW22l+U7d6tAb+euoo9ygHqr79RSu+/DQHJ0Yb3wsoSrNpkMhGTcj0dZ7v9tBctCQTX/xGWqrNcCIrKKw6Tob1wMVSPAtE1Tp3wfzjFPgcPZCkuV+vaBX1KQIKZGXcxYkEhs+Iv4vbdmQDImGsVljItu4++b2mujSvgy4atRm99T435vzcQYp/Q9qzgT9KDxtEp/HZJJszTPE2TJ5yUE77KHE+nck31uHjVy6JXrqzoxlw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1fGw6ZiJdBSoHEs52AmDn8XF8K9WUB38JQ6DHlTAuQw=; b=b7aSOJejtVAwTlGN9r0xS5yLQ4m6xn66eYowpnHz4vqUhXbwNW3jT0mOIJgQDwyFmDYGHosMrYD2REl3AZi8hvLLzxmlsEoOKbib6le72a8TV+J6Ol3BjtdE+a5HAhh3lEhHtVuZIjlp0zIRhrn27F1FyOQRVC7R7xc/f/wFibBKjeFnYVZYATcNAFyEtMoaJSjoCtYDbknxqfEZRfwVaA8eZLV0FIy0/9eCa8cm9Hf1Muk0yHWo8h8V0/rqls6QO9XWJDW8QBF+T4lxXHV8+2s1mvxfWnSUT+UiKFC6w+20NVlgOt86+w7ZjshScXdnJ1evRARrxbwObGPcWvLoSg== 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=1fGw6ZiJdBSoHEs52AmDn8XF8K9WUB38JQ6DHlTAuQw=; b=vRaNhG0Or/Vl1erNjJc8dtxYCI7XT84Qic1VB90GodK0raOXB71dMzYBrYNKGZH0QMYU1jEtMKEksMc4W+6kTmC4o0achMwo+0GtpLPIh2okkHi1rB70o41rEDKd2qSkjvUkWJ/ZrU+5xWFYou47HDcGOMqrs86MVABeJJcPoFY= Received: from BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) by SN7PR10MB6286.namprd10.prod.outlook.com (2603:10b6:806:26e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Wed, 5 Oct 2022 01:17:16 +0000 Received: from BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::dfde:308:42fe:6c5a]) by BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::dfde:308:42fe:6c5a%3]) with mapi id 15.20.5676.028; Wed, 5 Oct 2022 01:17:17 +0000 From: Mike Kravetz To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Muchun Song , Miaohe Lin , David Hildenbrand , Sven Schnelle , Michal Hocko , Peter Xu , Naoya Horiguchi , "Aneesh Kumar K . V" , Andrea Arcangeli , "Kirill A . Shutemov" , Davidlohr Bueso , Prakash Sangappa , James Houghton , Mina Almasry , Pasha Tatashin , Axel Rasmussen , Ray Fucillo , Andrew Morton , Mike Kravetz Subject: [PATCH 2/3] hugetlb: take hugetlb vma_lock when clearing vma_lock->vma pointer Date: Tue, 4 Oct 2022 18:17:06 -0700 Message-Id: <20221005011707.514612-3-mike.kravetz@oracle.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221005011707.514612-1-mike.kravetz@oracle.com> References: <20221005011707.514612-1-mike.kravetz@oracle.com> X-ClientProxiedBy: MW4PR04CA0325.namprd04.prod.outlook.com (2603:10b6:303:82::30) To BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4196:EE_|SN7PR10MB6286:EE_ X-MS-Office365-Filtering-Correlation-Id: 438385be-dde8-4d48-73a6-08daa66f579b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1iXlqrWgKWUzTh5S0p87CeJO33WWDJ8a5NwdqFsZV8YcjszsGymxCyTrxP2IVnmLMqzwDasyczfDPG2Eq9Jp/XlggWsIATlsvZlpeur9wFqJ9R0wgnNBOAjGJfqOk35yMrADbvk4g3PQBnhU89Ox2hlCquTCctZ7krSs+IYLmFfXbUCT5XEZoEG+KHCCG2t0Dz1eCaz1C82zlRhvo9hShIsae95Ogv1mrp/TicDmhM0M8V4+YZCErEFXLpIefzdgTvdvbFEse5I//FZJSMg1AwY11szJ/ivECnr/3cz7sEHZ1GZvd+13jv8hv/CyzwL3eppTVZLTaDFaBD4XTkNj8VazvioUDgqz6VmThOMIh7elot53PnOXF9srfVCL2zBkHlcp33LiPSW+SNM0Hw6YdmzPx5Al+MFnzZGr0JccmnPvynXaJiqFsl+D1rjGzwAXeUp3aafVMeIgchaqIP/6LCvNVsxTo+9txGLrjOULTdMluDZEvUWSGTp9i4jbgUK0oRd6kWZT0Z97eOHBN7T+h/BdSOrZSpZj79UTI9D10GQkb4csm/wNijbhwQpTsi2ZMDSJZnPsleNKuS1OtklrH8jQlEr3f5zdzXs6ymJgHWeomP15FU1OZW305PX2l67WhlwUUuBiB7IhEzUPRRLmsa7g03eKdAY3PtIhIQSTDvhMqCXE+4RG7pw7X/LitL6fSG/cTBZBO6cnDIy0tstdq9y5g9tVvymAzx0H2NtoUL0wk3eREOTNxlTueqhJ7wUX 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:(13230022)(39860400002)(366004)(376002)(136003)(346002)(396003)(451199015)(107886003)(6506007)(6666004)(966005)(6486002)(478600001)(66946007)(4326008)(66556008)(66476007)(8676002)(36756003)(316002)(54906003)(38100700002)(186003)(1076003)(2616005)(86362001)(26005)(6512007)(83380400001)(41300700001)(44832011)(5660300002)(2906002)(8936002)(7416002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nqsPIsCjJgjB+kmIxvYFoCPidK0C5LDPKcKsWU7Lm+cwENgplDrtqePUrNRczpxDnWylzbeIA8xVTj5TnCjnRrNqHNYv3lScSbAJOWCRTSztuobbZKsHeqkm7F7u7HJxoLGFSvNsNTaVqJjvZeAVfBVbv9iIp7wYRXd7/GFqBJeQM8KWeNz9UDpdfClUVSMf9u0hVuIQIIe0Qz/SaIWvGGgQLxpirtTPWbX45rLPKnDDOIa+nVlzZqexL73vAHbmnbAbUWIAJdoyrL2d5GCQYyOAgVz5Mhmrzu7VnZQwLdCF7KGggEe37PWe83wdgMnZFK/YObsf5BeFTuD7NjLkqiRR8SfPkXQgaZkO0fGtVExB9w1cHvOTRa20Ar51Dx7e1SaZduq6zqNVAR0JIGvVLRQh8zOJkHvJKYvpUtaFnaIZxgovYmvjVXDknYYLhjEHOKTaQzr9GpQY1QrKdJrSiZEA2jLsYykx+glcbQojDSaFLHgbLWTyr20jCN6Exh5WRbd/dlFiNh+T/hwvHWpcg2PlWIaVDvVFS+es2kT8wygnpPjrg4ftiI0PKLOp2COpofi9hjS5L5hKxJoxyRUqgYSm8P14lE3n11IKnzXaGLu/hPTxPg1YDi09S/WRimjpyfF1Sy7fm9J/WfARJvEnQiUujn7R3XUb8LJ4nXkUM6iRiZK8fJzlxpEVi2RFZDG9AnxZJ1OjNRnW6tfDNB+5o2XWqgKrAT09HAiH+/buvBBeZ2I8BzfErs7qj7Rmsgv0rVOTnY1oJFVoJJ3oKCzwY+g2Ggvq7J7Z6UJZxv+uL/N31gZURQc3rqhrjxk9mORl+i2q0M0/oG9ZAeJRtPvSbSHLVLTseEPD5VDO+rOcXz7vAKI9nElX1sXjLv1h1ptVcikzn+lVVKpsiYESNrGSvcp5kgm0hDXDHNzF3j/bQsGTJMOTjV1CYdad4wosrjfjkksywtzb5klleReLrrUB0AK6mprlXJLGI8OY+XgNTHMdSaeud5ZJeSfW8SqSKUmVuGChrYFz1cXHyMoUKVsISAHtA907DoFVaAOvU/xV+SQihQqAuIkp5rpCT5ezYJqvybSwzYBDqMdEQ/eYnyUt+fkq0j35rcCEoNVF2XKnWIhNy0qLCLzhthH0ddMOQa3bV8gE7nj66+0U8v9FQzvlzP1JxYH7KMDgAsnzxk9k0/WkbE0UUsUJDtyJdYG8w2Szs2uxGquaZnnxkVszmdTn7G7izP3l/ay7V8OXYmgMXLDI3Bpx/RmQM9HT9zEIeMyXKTQfxueyxOdzhDJ7xhmQUS8yp/VT77qc8GIU9vLEBzzdASh67pPtzSSTQRApJAwb1pTc+kPqTXmyv3TL6AlahzKhArKAIzddGGmf4LJY5tM0DJf5+Es9jIJfQ2naA943+Ki294to0T64MGthoXkoTZxonW8AUwTZslnWsbyN1ZfWlCF/UXn977OLGiKsrh+UIU0BPvRG5gA783K7G3sHj8Y8+2XFD42iuyK2pS8eb2JfHyDukmmpIn7XB/g7GGpNHAWMxLke/0lE47g7Pgeffm6yrGV2j6LZuz6oxuQ3RLURWyAvhcOsJ7527/KrGqVUA0Ypd5eV47qI+eg7GpQrCw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ZAY05/vH/t9teCToZqdovoWO9MLoydWwD1b+JIaadveTdj+MPqf6GsjldZp77B90TL3PfSLPStdzXTXZqX7EdlJxe1c2r0lULo7CZI3EvZIISo5aaonweooeAQ6hY4TX1t9JxSXX13Y2arfgwRLbFQIejgB+NQBNDyFaKYEPs5WET1ZYyvEkQMlCjbifkbTHGU8syK5BHzcaLWVA79Z4+VVpQDOxLpbgna8vruL9rJBdLHaIJZY8VyrvJyzmDuZXedCMU41HnIX/R19FT3759yP9GBXaaST+F6PwlRhrwdIRYXQnHA3eLOhKsDsv2lQ368ktxf1JbUl0Zcsi7hmGMktkV3TVWZCMiDnvPJ2naF02c3rY6H3SfVIOLX5x3h/cqQ1wY4rqLf9znu6ewc70Wwhn4o5A+BT9pXRmjLxffE9nrOzzJYKGg1ZUx89zLVZlNhNN6sMsSNK1ZTwMtcd+GU26IctVCAIP4pvYRbm3ZwDbSbaOOJ/Q+H74o35ctpYpTl1fo3MvvncuUEVit7YgGUGQleaNIeuj3pCHfkhAnR5/ubNpv0314hK530542g23KIc1gnR2CZ4vhaGMC1IBRfubUyMuSyVbiaxHN6SAWaILLfuZqgNx3dmz2tBu8BaqixgArExu2hpkhpVTpNEfnJ4kAuhnb8H5ArJP+yeaP48szUbj7SNEpAEZoGuaJ4+w8PUg++QOiS/JLCwpGFljNep1BmkZFPZBgd7l9sd6vwJkLKE6MCmrYsfuZ3dvRQNK5gzns0kKqB1AQ2W6A15ndwJw3ZevwDRvWtR2YMpZzxopwRrOUhLMlFGsJG5U5kIrsNs4oTsP2xEo8CjTT2mUflcsMhYkWfkWp7Si/thGrYEPfB9eg2tlUrag1EaaCwHSNNEIyG+Ser/u1+J9aMdajLk/w+0wf/Pcqa8S9tFut/eROf/Jm2TXZhztMuNsoCJniRnyD/0jvgrXU1AXc/u1eCzX1YdEzosgcgey3oG96KvhrVjTclinwhdmLmkaii/fLvmHi7RgGBw5G+rydtovd2eaCg9wYZS9ELsGgZQrTO/KUGvR1C3TIGPO7dcoyZr6bl9QqU4CzV9QMBTxlkBW3WZ4ArKm0HVzAIXIZp81q3hdOtuS2K9OT2UNhWNTu6BltV1fkeGAfn4Rh1+OYIAQIuYUt2D1cv4uvRjpoJMYxFPfufoYpwuHxV+N24pI28+vP182GJd083JXhkdqYdjgN7K49Mgle0xy+9pVew7byuJrB5rvRTaO+61NW1mjCBYkf7Jcy6fIKsDcZZL2x71Oy8ANQ4WDcp2bXKVEWHVrzkgYDKVDkkh08zSN1hIMtK97FWuPC3m3tm+WkMDdnes9bNCPYfMbKF8aLWNL90YAzYfOSr5V33xm/bQKK9Tr5q2q9R428qeijeCWubJe0u7gcA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 438385be-dde8-4d48-73a6-08daa66f579b X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4196.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2022 01:17:16.9763 (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: rksK4qBdZTp0exjskv/hQ4Ehlt/YtNC4zyHfh2ZkuCw+VrzI+QvpcVy1U4IcX8IBtFrMQS0U5yYnfVGW2wt97w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR10MB6286 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-10-04_09,2022-09-29_03,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 adultscore=0 mlxlogscore=999 malwarescore=0 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210050007 X-Proofpoint-GUID: WDiUNiRVTfU9Tclb9W8i9hxTbbzcY-iS X-Proofpoint-ORIG-GUID: WDiUNiRVTfU9Tclb9W8i9hxTbbzcY-iS ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1664932650; 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=1fGw6ZiJdBSoHEs52AmDn8XF8K9WUB38JQ6DHlTAuQw=; b=NxMcQWcGiXhAB2UszJ8JCXK9vTAp6uCjx0LqOWtLy/MSnHpYquljzFo/n8KqzRG++4mfm/ s4QDactfo4CCvy+EcLNFisqmghUbLd6XQh4ywVHrEcRU3vnm6XO3ToFvIt3kTHX6SD0lWx /FsTL3ThpCejIS46SSOX+YC5gIkCFy4= ARC-Authentication-Results: i=2; imf16.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=g9yVKxzV; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=vRaNhG0O; dmarc=pass (policy=none) header.from=oracle.com; spf=pass (imf16.hostedemail.com: domain of mike.kravetz@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=mike.kravetz@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1664932650; a=rsa-sha256; cv=pass; b=OSwzDamJwt9thHNhxdfoUk5VCwW2hZwdGoWqkw+036v82nzaxKEjYk0V8QugOBV40wILtq HhL0mQjpFsMSGo5rj7gYVge+FJmUecBF/2jZKCzcDuVQQ2CLUnQQTMoTKmXASo7nUDFsJC q6Tj35IqSAPQSzj3V4qM6wnrL+OwOK0= X-Stat-Signature: 7uym63at8r8sqof8m5f9fcfufiasefup X-Rspam-User: X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 9E73D180010 Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=g9yVKxzV; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=vRaNhG0O; dmarc=pass (policy=none) header.from=oracle.com; spf=pass (imf16.hostedemail.com: domain of mike.kravetz@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=mike.kravetz@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") X-HE-Tag: 1664932650-294284 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: hugetlb file truncation/hole punch code may need to back out and take locks in order in the routine hugetlb_unmap_file_folio(). This code could race with vma freeing as pointed out in [1] and result in accessing a stale vma pointer. To address this, take the vma_lock when clearing the vma_lock->vma pointer. [1] https://lore.kernel.org/linux-mm/01f10195-7088-4462-6def-909549c75ef4@huawei.com/ Fixes: "hugetlb: use new vma_lock for pmd sharing synchronization" Signed-off-by: Mike Kravetz Signed-off-by: Mike Kravetz Reviewed-by: Miaohe Lin --- mm/hugetlb.c | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 0129d371800c..388a32b089bd 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -93,6 +93,7 @@ struct mutex *hugetlb_fault_mutex_table ____cacheline_aligned_in_smp; static int hugetlb_acct_memory(struct hstate *h, long delta); static void hugetlb_vma_lock_free(struct vm_area_struct *vma); static void hugetlb_vma_lock_alloc(struct vm_area_struct *vma); +static void __hugetlb_vma_unlock_write_free(struct vm_area_struct *vma); static inline bool subpool_is_free(struct hugepage_subpool *spool) { @@ -5188,8 +5189,7 @@ void __unmap_hugepage_range_final(struct mmu_gather *tlb, * be asynchrously deleted. If the page tables are shared, there * will be issues when accessed by someone else. */ - hugetlb_vma_unlock_write(vma); - hugetlb_vma_lock_free(vma); + __hugetlb_vma_unlock_write_free(vma); i_mmap_unlock_write(vma->vm_file->f_mapping); } @@ -6894,6 +6894,30 @@ void hugetlb_vma_lock_release(struct kref *kref) kfree(vma_lock); } +void __hugetlb_vma_unlock_write_put(struct hugetlb_vma_lock *vma_lock) +{ + struct vm_area_struct *vma = vma_lock->vma; + + /* + * vma_lock structure may or not be released as a result of put, + * it certainly will no longer be attached to vma so clear pointer. + * Semaphore synchronizes access to vma_lock->vma field. + */ + vma_lock->vma = NULL; + vma->vm_private_data = NULL; + up_write(&vma_lock->rw_sema); + kref_put(&vma_lock->refs, hugetlb_vma_lock_release); +} + +void __hugetlb_vma_unlock_write_free(struct vm_area_struct *vma) +{ + if (__vma_shareable_flags_pmd(vma)) { + struct hugetlb_vma_lock *vma_lock = vma->vm_private_data; + + __hugetlb_vma_unlock_write_put(vma_lock); + } +} + static void hugetlb_vma_lock_free(struct vm_area_struct *vma) { /* @@ -6905,14 +6929,8 @@ static void hugetlb_vma_lock_free(struct vm_area_struct *vma) if (vma->vm_private_data) { struct hugetlb_vma_lock *vma_lock = vma->vm_private_data; - /* - * vma_lock structure may or not be released, but it - * certainly will no longer be attached to vma so clear - * pointer. - */ - vma_lock->vma = NULL; - kref_put(&vma_lock->refs, hugetlb_vma_lock_release); - vma->vm_private_data = NULL; + down_write(&vma_lock->rw_sema); + __hugetlb_vma_unlock_write_put(vma_lock); } } From patchwork Wed Oct 5 01:17:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Kravetz X-Patchwork-Id: 12998815 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 38E83C433FE for ; Wed, 5 Oct 2022 01:17:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BFD778E0005; Tue, 4 Oct 2022 21:17:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BAC8C6B0073; Tue, 4 Oct 2022 21:17:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9D8C08E0005; Tue, 4 Oct 2022 21:17:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 84F6C6B0072 for ; Tue, 4 Oct 2022 21:17:35 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 34863A91AE for ; Wed, 5 Oct 2022 01:17:35 +0000 (UTC) X-FDA: 79985133270.03.1CC72B7 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf19.hostedemail.com (Postfix) with ESMTP id B47421A0011 for ; Wed, 5 Oct 2022 01:17:34 +0000 (UTC) Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 294LO2RH014900; Wed, 5 Oct 2022 01:17:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=Wk7W81Wrvr7gKeTOV5ZL5doCE7rJAPEEjcDcBTrrTR4=; b=qeB1TJ9vdkhmgyTpMKdy5Shv9kh/rLI9vzZqWLfYwWf3qPKVP2pdEo3XFgbUkK6zUScG hb8+JArqPtbbD0p4tGQqMc01o5u5xIdlWzxwu5pOuEMmahapAI4SQbcc9z4UjRYSXUv3 ccdh8aUs4pbBrld1sdbEKwGJBedhEtrJM//MtzsbmZkXvvnLqqOTQ02yw2Jr2bDmrgFq uVRy+SD1RC1m57TIKgs+r/sSONHl9c4M3ovgu5ZzTdYpueneK5otJJ5XG0jKaIljIDZ0 aHlyRql781MhL8VATaB1d0zYXDv4MLxHZRvhLuHnBA/Znqot7Da2fyV4scKMxpcD1SPT VA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jxc520bur-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 05 Oct 2022 01:17:23 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 29515l2B001159; Wed, 5 Oct 2022 01:17:23 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2046.outbound.protection.outlook.com [104.47.66.46]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3jxc04y7q5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 05 Oct 2022 01:17:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=STGxV/LqBnAIUcsXosFA864CrfN8clwDmoktYhFXlLlVw46t/IYTLeJItRPAmNVV4rm+63irKVngONnm4fRBdVYjz6VkyxHNelo32YBAF+ds1f8hEhJHQR0QHdkeiBohlKX/qpFvFO1vY3NPQWqzzMoSyOp/rj0duG8Nbf/6agMVIidXP1yA1PyGbSsjk20LpNiZfxtIHO0RMw4k5bLUFiOxihlY4u1JkH5VcHqWeb3dQNsjfwOl+CMa+0xo9fd4x6PvLcBGvymuBjvZ/UirvGfs5lZTH+Ut2r0VOsH6Dn3THU85wpyE8wG2LTwRbu+7lvJXudXsErxmqz9v/Rlj7w== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Wk7W81Wrvr7gKeTOV5ZL5doCE7rJAPEEjcDcBTrrTR4=; b=IU1rMBF1JEe9aW3wdjPcdYFogaCCevQa4M97t6EPl4pK/QG5Dygv56IFiWx/zyGdy/usX6Id84Jlx80f3COhnF85XmRF4jk53dZyElsJLz5M9sct8If0NCVU+Tfo0wAPQ8CRGTR5lOVZFCWqwOtZT6+vJtw+FMyutQttJxBiCkzQtrQBhL3YdDBN0yp9RwXltncH89e+B0detBBvDoJ2xMs3IV1k2XPwfaJ4EEL2lt/exoJ4yWoFEFheNBXATV/RTLwzRuIe7hz4fVmv+pZUhMXER7FVNeFg/b+/aHEWTG0suwK3Nz8tc95Zxl+IB1OavX4U6XiogH89XpIvpeot8g== 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=Wk7W81Wrvr7gKeTOV5ZL5doCE7rJAPEEjcDcBTrrTR4=; b=eqoJixGWfVjA5og7e3LOOsYlF9D/N42tzQCINUIl/HKfhCmUIvNdItE+gp/WAidVFSLs/sPWi+xK+fHpdm4CcmVMn7slnQpjUf4jx3e4s2boI1w09WG/D3M2yHGOKpRRf/00OyD/lTb5bV9FILH9o40tbQ/fyl389VT5OQVMB8k= Received: from BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) by SN7PR10MB6286.namprd10.prod.outlook.com (2603:10b6:806:26e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Wed, 5 Oct 2022 01:17:19 +0000 Received: from BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::dfde:308:42fe:6c5a]) by BY5PR10MB4196.namprd10.prod.outlook.com ([fe80::dfde:308:42fe:6c5a%3]) with mapi id 15.20.5676.028; Wed, 5 Oct 2022 01:17:19 +0000 From: Mike Kravetz To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Muchun Song , Miaohe Lin , David Hildenbrand , Sven Schnelle , Michal Hocko , Peter Xu , Naoya Horiguchi , "Aneesh Kumar K . V" , Andrea Arcangeli , "Kirill A . Shutemov" , Davidlohr Bueso , Prakash Sangappa , James Houghton , Mina Almasry , Pasha Tatashin , Axel Rasmussen , Ray Fucillo , Andrew Morton , Mike Kravetz Subject: [PATCH 3/3] hugetlb: allocate vma lock for all sharable vmas Date: Tue, 4 Oct 2022 18:17:07 -0700 Message-Id: <20221005011707.514612-4-mike.kravetz@oracle.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221005011707.514612-1-mike.kravetz@oracle.com> References: <20221005011707.514612-1-mike.kravetz@oracle.com> X-ClientProxiedBy: MW4PR04CA0347.namprd04.prod.outlook.com (2603:10b6:303:8a::22) To BY5PR10MB4196.namprd10.prod.outlook.com (2603:10b6:a03:20d::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4196:EE_|SN7PR10MB6286:EE_ X-MS-Office365-Filtering-Correlation-Id: 5ad8d9e5-4f49-4be5-3736-08daa66f5925 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6HjAIdXD7A/LOBGJMFzwWE9z5WgKuhN8BRPwlve0iHDJ1p8av+I8BdtqGtzEHtTla7VPqKkqSKAo6vEI/EgT54npW3QapfXRlo1rTellaG32fM2y+bUysqNAuloNLTirmGB1vfgB4Sjf6yTu6mzu+t60S0T7m7FcXdRWBKJ0kdNMR9WHANOkqsB43s2BpnBQhdXemXK1X3ut7mPi1rOFfv+DHvKuyOTBsyGorSNHwFcAQgUsh0xJJz8CHhtF0hi86rGw/cvG/7QDhPOvvxQ69QAos4zkF9kdrD8lsLqLDw8PpEtePV4G/uuNzQGAD5pMcJfTxpDBZZiRr5tng4Rce8JgJ4vBlS2IsRLWinKlfiidqQfLPMGElSZ6XIHvfAalhPFX65hQmgCiu6clkF9xcm+teJz7FeKW1kUl+RmOgsLhr/d1ZWPiRf2bdYvBs35BdQUuju/c7+GLpTC/qZwVzddS7wZyChBWtk/F6pwa1drZQLfvSx6dOvpNRg2g5wfEZ8+Eh/fkCQMFWYVQ3QU0qvAkhSK2Zo6RNg0+ynPA+oddVJ0q6mkZ4mE8Y2jWGD757bHCTuubAa36A5g1SY8MU3F9hKSP7xBJmcNJExMjaC5zYqID7yofS1E22tVe+fTYN0UNWA5gnpPDyKB4wSWsXnPCOZZY0GPq8Udy/CzYBW+qOVWcLAqXKhNOBHt2IxHp5I1wdDLtBfAisG/1YD35uI03D5bsG1jJUPj7Yti8/NU= 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:(13230022)(39860400002)(366004)(376002)(136003)(346002)(396003)(451199015)(107886003)(6506007)(6666004)(966005)(6486002)(478600001)(66946007)(4326008)(66556008)(66476007)(8676002)(36756003)(316002)(54906003)(38100700002)(186003)(1076003)(2616005)(86362001)(26005)(6512007)(83380400001)(41300700001)(44832011)(5660300002)(2906002)(8936002)(7416002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: k1bhxN+h/RIE35e3u2spfex5P1znBY7yHu7Sq0y7wcGxzUzc0t7OJ9YFXwGUu81vqsvdj5NohIy+445wRB8dVefDyFjNoZla1FROjvip2Ajg+MxenFiut6YpD22wXn3A876UrQzu6/Ya0rRuIKrmvDDHikfMBlOwt0sx0vpwiBws5QtKiGWwLaMJn5svIjp9TDK42u7xvijs2qI4cMql2MC+MgdcBeAP9/VVPx1Vq2YUGEc4T/Muy0JeVHnsi8w2Q8IkDtfYffmOme5vjJPzQOofARoepLYp9VmYfudfwlTdVSHfWAjN4Vr8aTSZk/F1AYrWZrFWkFz/NPtNeOVJog4J1A8AWwUV6zSIBHpYDK/ke3z0B3063XQVnrFRA8bmnC2vx45LdHDjQ14kLf2Rk1sTwG+vjHOQbdylVL97sEEjHfzHPbVCIxtCj3z8wUZdKbPrl1Mju2KrwliZT5yvgh8NP7hOwx8CEPn2lwCeuF6qtbwPeaK8tIcj3+OC+FQ1/qp2x+VGHCozgQKq5dKiy6YRQhBa2Fk9TPJMHvpR8fsxEBJSz32F0z+J8vgqfwOP4i8yFWrz7scllB0oZ7eerboDfqqz7NzGTng4diUoG0lPCTbjpBsh1GICjCcnlOYw4TDRd8zGtSzycfP9XtbC61Pz7BCcj7vYSaE/JQsshjTUd+HdC5LpjhvytHF0oWpBRB3yslDN8u1ZmvfKIe6A+hy6fS/0fTLghRsp1hVjUKHJ+fb9OOnvv47cWjKN1ag5eqnH5IxMGgTbVCfUvvrk0l687A3aMYgdvq1cpQ18Ugce1Fj6jhne9V1ZIIZplIijzcTmm4VESbGiHcpq3+ECK3Tt5RpeifWkevRGCNtk6ziAAgMSBbnlrSWf01IKQjGmG7wsiYYzWPMgM5HxzOfCyw9I4N2lhcX3gyXfUExBxI85XWzQMDbTS4E/MeirMMpQi8LdsqmoA8PNpNFAqNEgm1SHQNdU5v59ZWA0t9Vo17BW/SwXjKnYrPwFUL2kmbxUiulU5XXsfzzcPEZ7JYdvUK3uDusTVlpVdTQB/yS7R1Hfp7K757VJJx55ue+EGqwfnrB5cPCBm3scizfinJ9uSPFtMkLtlUa8ZhIdspqZP1knHyQulSuHaJZfsbNb9I2b6kFm3lCXQbKYuP1A4ocOKufJJ90v69ym/LgsCoGU1J21gH6KqZ+eKx1GdixvgCbahaBYqXWx4YdwJQoo07rX74jqo6w/JZnGOZBRTGGtQTnLqCERkWoHfL7I4RhfLRjVE8XmBh0iWMuowrCvEE/rttt8KVqIZZMyNBnZdg0LuRyM+jIHR+1JUChFWaimpZ+D6LypEc0zsfTL/SM7wcAB0oNsJOIxWG6quY++x64+eIV1TtEH6wSKWkphdv0zXOAwR4mcXTxhpq2QJaWlLHnsYW4DCXIIC1gFSAb+iW5SUumTRAEHoOuIceOIfFcxK9YloAqBWxY38Ahe1c/j31oHdV+hZlb3mLVXMxALH72UaqxN9rEEU0/MDGpUyL+SxE7gXR7/TDMFJUKFBto0/3mFwCMQkTqkKx6CjoeP+TnE0bY/5MJc0BqWgxPamMr+HV6cldEFkeafKX65RFx+hdKKCw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: C8THy8pUHXdTymYEXh7R8jBp1BMOTBXUMLmjDDpNbF0owdQ0AHZJzl28RlFakHU8Y6olIrZ3UbVH/joa0e6FTBhQKVffkjb9XSBnwkiMRW/nC3SQvyrPoxWGvllmKHTqBG5n6rAgM2U3fkyfub/EJkZWBEMd/Uk7I1ikAJI8RPM1qCDiuiBYxTGBGquLQhxBJP2A1OKjpdqcFgmVL+OS0DPWPVWu5gQ80TRk3zRJQ1VrA2AJLjowA+b6QhhvViBNtdgKFGMWCFlRrSeABwaVVtVPuieGu2W9QgsMZZLZPlso9vMxZ1s7UZDcyDs5PSu1b+IA7VK9IvbJmT8KdCu21RQKKLdlDSY4V6nHQ0mRfFEiRDGBw5GbgIPnAAX+l5XFJUm/naOY2/Kr8yXgMlAis/O2RMnvqc+RcoQglKhIC7L2h9bB7nYCmeDDLUEujWPpYPuTUPmvJWkwDBLyq6v0RankWtH0HtuJa5kzkdPC4fYC2Tu6KH5sYLadTfK1iSkBkPv/tnYQmksefpmU/CzBvsu9CmIi03PUwkJ09f53p8LTOAI6wbjhvrH5vagG3/TU8vrDDnfWyVD81i+KLJ5lbnCWMX/i4QGFlqcAcYidridkpCDVBSroYj8Tfem6RdpG59tJf1NnsCI3BS3R+qqByIaQvmjIKq0zY93HPKrRi6cUuEVbSjyn4o28JhlSUZpXWn+apgLjDbLJn9vE8lM6QtCmKyWv7MDnuXxET4v/4uxJxs7fA7qqnUAwYOFFCcMdD1xLcQR9M2vMTLAv3BV04oCLws4E/OSsy3uiPa0Ym5ujqtD45KQag7PciDItKPkorrBY0hGlX9cjQ5rd9von1Yku2GbrxKEGDQZ1MNuvSzRV7PLIZ4VMCLd7F1VGm0wDsLf5rnZVuJmdF2xhNCNitfbb1t/GQeFCsrr+uSryfzUM7Esugu6G30LmktxLPk+b/1eS+EzCKLUAbqLc9AsBDUpTvV+kHpEfprXIbHXbyhvIKDEpcFRUDceiInvX+VrD8x7cz9RNgiWlDELVRpLyR6WssyZp0P/uIz+cYoYKCITHLnsUdqpaPyxCn8jhCvm54CNgr+TxzQsszhN5WH/du7v0OkZfX/hr85m41iMea24uEj4uT5SNjnivIEmpgePIPcoI2aaRjyzpBBFGyu4jcNmvACDsk6jtY8EpfAz2V5RdvV1RzLmoRNi/DOD5i54g4yMwq6N9t5icym2Ct9sTIWnuSGu1ZBGTffNECpcG1nWsHVxakn/nM+7jv7hgp6Mv3AkCCp60UO3HRd+N0k8Z1BYeTDgUhMIamR3j8mtLCKXIg3Ml1qae848h5u/G2ZKjFK/4V1I+xjhmHUQ7GCeOqIe6wuazewJvXJvsrlrkKTNidT5mITDFMJ/omyUugPdYzF1cE3DGPXM4wLahxMSQaA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ad8d9e5-4f49-4be5-3736-08daa66f5925 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4196.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2022 01:17:19.5412 (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: Ju5CXR1iykr+WlePR9fJwYpYW6+9CjaALzaPxgB5dN6Ha4KDzQ71HjpYT4RvkdEHOu9DadLLBkDR3DwaYE5KuQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR10MB6286 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-10-04_09,2022-09-29_03,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 adultscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210050007 X-Proofpoint-GUID: 84aux9AHc8WNe3uvZo_5ET9QKmPjKjyT X-Proofpoint-ORIG-GUID: 84aux9AHc8WNe3uvZo_5ET9QKmPjKjyT ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1664932654; 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=Wk7W81Wrvr7gKeTOV5ZL5doCE7rJAPEEjcDcBTrrTR4=; b=tffYR8Z8HtJiralx4vpShX8tItzMZg16aih4pyxK3SzcTnpy0ihgpG7lA8SnXlq65/UzPz 8lznaOxs0UFEuxKmuYS9H2/q/VuAtX37qC99C6itEUxDchEaLSainHT84cFfEOmvENgxL0 /Icxp9tIn6SHHD3IB/5bGxtU8yl+Hho= ARC-Authentication-Results: i=2; imf19.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=qeB1TJ9v; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=eqoJixGW; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf19.hostedemail.com: domain of mike.kravetz@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=mike.kravetz@oracle.com; dmarc=pass (policy=none) header.from=oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1664932654; a=rsa-sha256; cv=pass; b=FnCDslB05H/V9pBJocY8cLdAguh9LnlftZ6RFyI7PgX5hpEZg6eC+jmdb+8N95uEY1SP+4 3boavTViUmp28NMPp+/oyr/VQkL50cTitAYV8oQ2BqzWZNMsorUg4tu3xVQLCZZgBt2bO9 2mtMdBUhkuXwBXssMf9Do0hAwztO60M= Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=qeB1TJ9v; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=eqoJixGW; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf19.hostedemail.com: domain of mike.kravetz@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=mike.kravetz@oracle.com; dmarc=pass (policy=none) header.from=oracle.com X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: B47421A0011 X-Rspam-User: X-Stat-Signature: w4gguxd7rbuosi56kq7iuk4kytbze6ii X-HE-Tag: 1664932654-831670 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: The hugetlb vma lock was originally designed to synchronize pmd sharing. As such, it was only necessary to allocate the lock for vmas that were capable of pmd sharing. Later in the development cycle, it was discovered that it could also be used to simplify fault/truncation races as described in [1]. However, a subsequent change to allocate the lock for all vmas that use the page cache was never made. A fault/truncation race could leave pages in a file past i_size until the file is removed. Remove the previous restriction and allocate lock for all VM_MAYSHARE vmas. Warn in the unlikely event of allocation failure. Fixes: "hugetlb: clean up code checking for fault/truncation races" Signed-off-by: Mike Kravetz [1] https://lore.kernel.org/lkml/Yxiv0SkMkZ0JWGGp@monkey/#t Reviewed-by: Miaohe Lin --- mm/hugetlb.c | 50 +++++++++++++++----------------------------------- 1 file changed, 15 insertions(+), 35 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 388a32b089bd..593aac995911 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -6753,10 +6753,11 @@ static unsigned long page_table_shareable(struct vm_area_struct *svma, return saddr; } -static bool __vma_aligned_range_pmd_shareable(struct vm_area_struct *vma, - unsigned long start, unsigned long end, - bool check_vma_lock) +bool want_pmd_share(struct vm_area_struct *vma, unsigned long addr) { + unsigned long start = addr & PUD_MASK; + unsigned long end = start + PUD_SIZE; + #ifdef CONFIG_USERFAULTFD if (uffd_disable_huge_pmd_share(vma)) return false; @@ -6766,38 +6767,13 @@ static bool __vma_aligned_range_pmd_shareable(struct vm_area_struct *vma, */ if (!(vma->vm_flags & VM_MAYSHARE)) return false; - if (check_vma_lock && !vma->vm_private_data) + if (!vma->vm_private_data) /* vma lock required for sharing */ return false; if (!range_in_vma(vma, start, end)) return false; return true; } -static bool vma_pmd_shareable(struct vm_area_struct *vma) -{ - unsigned long start = ALIGN(vma->vm_start, PUD_SIZE), - end = ALIGN_DOWN(vma->vm_end, PUD_SIZE); - - if (start >= end) - return false; - - return __vma_aligned_range_pmd_shareable(vma, start, end, false); -} - -static bool vma_addr_pmd_shareable(struct vm_area_struct *vma, - unsigned long addr) -{ - unsigned long start = addr & PUD_MASK; - unsigned long end = start + PUD_SIZE; - - return __vma_aligned_range_pmd_shareable(vma, start, end, true); -} - -bool want_pmd_share(struct vm_area_struct *vma, unsigned long addr) -{ - return vma_addr_pmd_shareable(vma, addr); -} - /* * Determine if start,end range within vma could be mapped by shared pmd. * If yes, adjust start and end to cover range associated with possible @@ -6946,17 +6922,21 @@ static void hugetlb_vma_lock_alloc(struct vm_area_struct *vma) if (vma->vm_private_data) return; - /* Check size/alignment for pmd sharing possible */ - if (!vma_pmd_shareable(vma)) - return; - vma_lock = kmalloc(sizeof(*vma_lock), GFP_KERNEL); - if (!vma_lock) + if (!vma_lock) { /* * If we can not allocate structure, then vma can not - * participate in pmd sharing. + * participate in pmd sharing. This is only a possible + * performance enhancement and memory saving issue. + * However, the lock is also used to synchronize page + * faults with truncation. If the lock is not present, + * unlikely races could leave pages in a file past i_size + * until the file is removed. Warn in the unlikely case of + * allocation failure. */ + pr_warn_once("HugeTLB: unable to allocate vma specific lock\n"); return; + } kref_init(&vma_lock->refs); init_rwsem(&vma_lock->rw_sema);