From patchwork Wed Jun 29 22:53:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khalid Aziz X-Patchwork-Id: 12900744 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 07EBFC43334 for ; Wed, 29 Jun 2022 22:55:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 211576B007D; Wed, 29 Jun 2022 18:55:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0DD078E0002; Wed, 29 Jun 2022 18:55:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BAA4A8E0001; Wed, 29 Jun 2022 18:55:02 -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 A4AAE6B007E for ; Wed, 29 Jun 2022 18:55:02 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 77DD33210D for ; Wed, 29 Jun 2022 22:55:02 +0000 (UTC) X-FDA: 79632780444.29.396678C Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf29.hostedemail.com (Postfix) with ESMTP id D963012003E for ; Wed, 29 Jun 2022 22:55:01 +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 25TM4ain000903; Wed, 29 Jun 2022 22:54:28 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-2021-07-09; bh=w05FYHNlKNrWph18aS5RLxPDQ90bMPDdwIo7huXc+tk=; b=ICDvyNIiYYntUWkd3FULW3fwML0R8tgjmyJYREDpRhHOAPoF2jVipNvGeMBh3FJwOdWn csGdXCp/xitEQecxBOpIBO96E9D6l1MyH3JIeQcVMV/vHi7lvW1/Iz6rD9cqXSrkmFIu rr7y2GkI5BxfA8E5dH/cneHVY9rc0ycPVR/7yjqz7qAEoKjlz4c/CVrkyLlTzNUpkuXy 1xbQZcbnHcqcMeAWd8t8Oda1bqcbCDMk13gAhDLS1QuNPop/flgPksigkjluYhAgVgOI /ef+HnVDlLroE31salhXTKu6+GhfCd4BP+8XPyEK8db02VPAfyX0iV0rFHs0X6Cmap6N pw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3gwry0jnk9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:27 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 25TMeS2v031827; Wed, 29 Jun 2022 22:54:19 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2174.outbound.protection.outlook.com [104.47.55.174]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3gwrt3h9rp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EWpL9iTGpVXwMVZLNEWdxiJkfmlwO3Aqv6lkI6JK/zvXmIkjK/5aReCTg2StcLGemPZrpr74uyxy21wR+thO2sFNkAgvJBPg+vHJPKXXwXFg4EY+mA6Zgj1qGiqTrTmqqa0zBfaxKIh79VzZ25ro2r0NQwpYwjdpjlPiD5zhycpXH1Z1sEvwbz59OJRywq24DR++mNnZ3EmxW2Cc5v1lXA+g1DtdsPhOMvo6KcdCknyDr8RjRjbAu2UgJwPPuJxkci12IDAicVjB10rJv/GYqDiLyhd0lQK7SA5YPMWhgJf9Klp/RiSOpPOVqMWWVdY3v1sDYEHZc7L01BOUz954UA== 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=w05FYHNlKNrWph18aS5RLxPDQ90bMPDdwIo7huXc+tk=; b=AXuLY4BxwSvxt1vrT2QLpuu+MLKSd8rsZ0Fet+98lWOGkYUXwMKoEfFPoNSRkcCcHnn6djCaowwjc6ZwhqQ2uVzUFrIx3TjrWGUF+ziy2bmBi0cs8Cwa7BZyL99aOgw6mLlf/U2Q2/Th2roW3X9g35ouS1pinbOsgQkub7oJL8h2Y3as153exWeSeUVpbtM76tC/UbfwtYZOVTS07gf6dt3s7LbPTkNM0ZffEZphaWxE5pNmHGtf9ueCacoAcRIiF8PPIP58XfmTYg1LQ9TK9qDNlJDDebzEtR/OFy09+lpK3ril6ijh807pGb8lcJpLqDzU5OMN3TtSfR1nuO8ENA== 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=w05FYHNlKNrWph18aS5RLxPDQ90bMPDdwIo7huXc+tk=; b=qL7sX2FnZEd9Vj1t3bqXVO3ghN+G4GbjYqu4r1y7Fvms9HicY7TsS2KD5Ze4SZIlnhZqkTQtuLnfcULxN2dIlssLJSz8TKq6yCszbxZ7FV2TUUfhQB4huomvaR/BCfigcckQKM4pdisyT4EUtI50xwVMrJ2bMHrCZxrtZxMVv5Y= Received: from BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) by DM5PR10MB1834.namprd10.prod.outlook.com (2603:10b6:3:10b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Wed, 29 Jun 2022 22:54:18 +0000 Received: from BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2]) by BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2%3]) with mapi id 15.20.5373.018; Wed, 29 Jun 2022 22:54:17 +0000 From: Khalid Aziz To: akpm@linux-foundation.org, willy@infradead.org Cc: Khalid Aziz , aneesh.kumar@linux.ibm.com, arnd@arndb.de, 21cnbao@gmail.com, corbet@lwn.net, dave.hansen@linux.intel.com, david@redhat.com, ebiederm@xmission.com, hagen@jauu.net, jack@suse.cz, keescook@chromium.org, kirill@shutemov.name, kucharsk@gmail.com, linkinjeon@kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, longpeng2@huawei.com, luto@kernel.org, markhemm@googlemail.com, pcc@google.com, rppt@kernel.org, sieberf@amazon.com, sjpark@amazon.de, surenb@google.com, tst@schoebel-theuer.de, yzaikin@google.com Subject: [PATCH v2 1/9] mm: Add msharefs filesystem Date: Wed, 29 Jun 2022 16:53:52 -0600 Message-Id: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-ClientProxiedBy: SN7P222CA0021.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::6) To BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9ae2a4b2-e0f2-4184-8652-08da5a224be5 X-MS-TrafficTypeDiagnostic: DM5PR10MB1834:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VxfIi/GrdJHnGL5Tdd9eQA6PNu0MHMk+Cl9HcA1H9MY0YJOoeZkQHJM1XJU/+VP+snIKaH7sH5NI8cZk4nfZB1c34ryLY1DRWzjV4Y0d/jQMr8aTqoorHaw5zFuv99RO1r4+iCugEiV1g/4wwCLwyFqQzGvGrLf6c5ybZQEyyOZEE0E0ok/cW5lNA3Z9c2mzd2GoazKOKvRmUUgjJ6G8RC8zvrcOy3OC55SmCY+o0OR5yAQXWFWGDamRJiQjYr6aPsHIot2YjN/Bfu2W/821Bcw3F3fDwuqhPUQHSO83cvbTXQGLHu1eBmrJzNQsnpsr4Rp1MIuZBCfFWEDfxUt1ivlNFzxRcJpKrLfGyGC8rdsPQZ6nZNC2M6OYAS45YGmcsRAbAdaKIMIrU/EEV9jbwSpDT1qiT5B7SwYbwPKpuNkdO+5luTV+8diRvbXiG5dJQg7odAJDk7RulkvWBetwNrxZ2TPDlCqppDb48w7by8QXkWDWZ1/a6VCf8EkinQAC9hrpNtV9+JryZesWfOa26u+Mfu52KIxjIPO1pST0+qGck2PeNP6WwuzivNhFTnF7ALjX4rI8iiKZafKxhTi1uEozsoSDbS04SKg/jyN9iP7uC/WU4nEHE1J9Nq4yjxmo0hHGSYgHFmDcYktNRvJiNytBTXvmiv523aXKSnrHPWZTUrsQAjHbpxDJ4xMuGZpMs8bIR/E1gLG9PSO8qVtNUHQhir2cpFQHSuvItNY+2yM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR10MB3220.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(376002)(346002)(136003)(39860400002)(366004)(396003)(6666004)(52116002)(41300700001)(186003)(6506007)(8676002)(66556008)(2616005)(6512007)(66476007)(38100700002)(83380400001)(44832011)(7416002)(8936002)(316002)(36756003)(2906002)(86362001)(66946007)(6486002)(5660300002)(478600001)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XsklGQ1jNXpnPtWr9IIVIHKgLe8vjWVSaB6AnB+hl6BeRrTtwMo3x6z14/70ck/MTLXCsMqLuowarkgTd963Bj/3+DuhcLHxYyWDab+CkIbHydG8PxOQkLTCfBoWmEONmqgy8Byiv6etm1Do1lq0iGK5qdBHQh/bFnulT2ohxZMsh2sqPWzQlbdQISQ/zdvlcT7gQiy/J0xMC1xBWsPF+QgzJxukRrauKm1TeSepmazdTkukEgGezLs4qWzF2MfDmoMVFG5DEVV6fkYgcKeOpGCLUYyLahgrZ3QLgYTChdovFhEHetzJ/ztTKQiL796y5oLmuC9LD5Tjd+KtteD1OkCM9/2LLDq1gCt67HncmZtI+DHT751NvFV/PPR+6a9xDZEQ6Zgr9fwy2bTIZA4sA/2r+ujRQJYYAuqwZP78RlmYAd13VrKfK8+B6Ujiloj92QqgwhsJCEqc9xZ+88nbWxgCRhOOL4EzRg7gepDgCwSdkBjPqeOcrCTR19B/t5B72eZVSjnuDFr/2UiB/cynYN8b4eg2Lh9eWsnGyI/3Bi2OPjPON/EsLrT81FJZzYQk4zgGj9wByot7nxclxbaB0kDGwraUvJlLCTzSeQ9dIzXxQkOK1kYANSeqbJ042goY0WE4IAwBod8RBsI4S9uauOSlc0vU4qkgqV9q+ew/sgw2xrOKxgLEdYUdDhWvd+jeHPhbbl+ISqg+VXGKXXKekHwHIXtGybgSKT/j5oTPdyyxPRe2Etw8Tu6TSOwWtxbn4xQ4ArIk8C7NXapAxNwlu988iBqWwduFk66bEaMQVDO3RcWI+9qsMeNLMMNSk19rKAA8i5anmOae/ZJGipfwOcn38gzQrM431qYGkpLrVh0H7/+43+Y2szSxUzJb5UAgph6MnUVm2RYRk0o2/DmAoQPQnYl2WbLvKwBbqcuwgCAk1Lvhye7qEys/djSz01TYNPTS0GfI+M1sdvqhPMpp673/oGehBWY9e8kT9BX+WMLHyjpr8PyrBAZh2JOtrvld4FaTifCijASgCgvNNKOLtPivwSvk6Kpqsz/wuIKbJoEqauiZQYaccfr5g5rQqnilBkG6AqQGq6zDEFoDb7kWkNhnpI9izaGpXvBkz9UQ+14sPSxOVBJnUqR6ZKYGRVGAPGQHnvgstQx047NZdHs6iSSeIfmK0tBaQ9GK/eqKNytLLS4jgqKZelfrm32PclHxdREWuKhcU1HznyAFvTIDM3dK73GZ6J7eDVRLq+80+3Z9tuNmPntDVrD72NCJMNbKUHRk/DAlHI0ajfaNkkdaERLx65hcrYBtkGtuyFYCqGrLdheRj4VMUbmvHLEtkrj2cR4L2wBxgF6LLPm50BmIgVrplvFwgBDCsIdUemaQMNWzuTOlOob5Z16QZrPkqs/OxHjAwp2Vz3IbTSFEhtrL73cTr1M5QnnXNY6wJGxxR9pt2IFsVAnQhfKWApVD/6U9w5v/T5QIHIaFgbmQOvxO6iJZQI5oXOqm/4B/b9YvJ+CUdDpVmmWjYuIr/diwFEXVDUtqwGTvpkFTv3pPXIBJVPMpdaG5nSie+wCL035Fbu6v5PW1DSRrT3f3ruL/+avf67iIqhJZbiU5vWCW33oCxBqzeIPpWGO+oerH5H5WGx/o0pfveBmNSMHATtKKMH6j X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ae2a4b2-e0f2-4184-8652-08da5a224be5 X-MS-Exchange-CrossTenant-AuthSource: BN8PR10MB3220.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2022 22:54:17.7567 (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: JWM58AzVeAoYEqqjkWEuLcfIu8AgbOtsDxTK4QvHDgINi/Fak1FnIudqrMPQrjgqrXuqFDJM/2PlqvJ2nr8lvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR10MB1834 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517,18.0.883 definitions=2022-06-29_22:2022-06-28,2022-06-29 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxscore=0 phishscore=0 malwarescore=0 mlxlogscore=999 spamscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206290078 X-Proofpoint-GUID: U_44Uyr39N6VLmhZKqP5bc78xPmdhb6r X-Proofpoint-ORIG-GUID: U_44Uyr39N6VLmhZKqP5bc78xPmdhb6r ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656543302; 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=w05FYHNlKNrWph18aS5RLxPDQ90bMPDdwIo7huXc+tk=; b=IdjZ29crAD3lmkgSEyiDblkJ1vUiFP4YXUJP1KtaDnPvtEsCH91uTV4qXBupRrC5G+oWMw aEHeExvs7uWSTvE6+pSWcQWwA+R+AfgNX5RbRbnIir+E4C9C+5wjvD/yEAJz/2ksWH+HYp HgKXW3lI796nAvImImv9yn0sUOpH1dg= ARC-Authentication-Results: i=2; imf29.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=ICDvyNIi; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=qL7sX2Fn; dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf29.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.165.32) smtp.mailfrom=khalid.aziz@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1656543302; a=rsa-sha256; cv=pass; b=qQyKkwbd4LBDrSHUxXUDroqDQYaon8Vxc54QwaUWYdTis2pPAdFWJeTLhL3q6GGJ1RvF2X AwVW7VPmlZ8RDRfyvVTwcO40FtUldqvY8cxLKyuq27a0krR2sdtDLhK80uIuCwkXkY3X7G 2IrwqP/I6qxr9lSxffjLX+ozmXEMtQM= X-Rspamd-Queue-Id: D963012003E Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=ICDvyNIi; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=qL7sX2Fn; dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf29.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.165.32) smtp.mailfrom=khalid.aziz@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: grcyi1jkwkbxzz56w17pf4fohx6m8xdt X-HE-Tag: 1656543301-776963 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: Add a ram-based filesystem that contains page table sharing information and files that enables processes to share page tables. This patch adds the basic filesystem that can be mounted. Signed-off-by: Khalid Aziz --- Documentation/filesystems/msharefs.rst | 19 +++++ include/uapi/linux/magic.h | 1 + mm/Makefile | 2 +- mm/mshare.c | 103 +++++++++++++++++++++++++ 4 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 Documentation/filesystems/msharefs.rst create mode 100644 mm/mshare.c diff --git a/Documentation/filesystems/msharefs.rst b/Documentation/filesystems/msharefs.rst new file mode 100644 index 000000000000..fd161f67045d --- /dev/null +++ b/Documentation/filesystems/msharefs.rst @@ -0,0 +1,19 @@ +.. SPDX-License-Identifier: GPL-2.0 + +===================================================== +msharefs - a filesystem to support shared page tables +===================================================== + +msharefs is a ram-based filesystem that allows multiple processes to +share page table entries for shared pages. + +msharefs is typically mounted like this:: + + mount -t msharefs none /sys/fs/mshare + +When a process calls mshare syscall with a name for the shared address +range, a file with the same name is created under msharefs with that +name. This file can be opened by another process, if permissions +allow, to query the addresses shared under this range. These files are +removed by mshare_unlink syscall and can not be deleted directly. +Hence these files are created as immutable files. diff --git a/include/uapi/linux/magic.h b/include/uapi/linux/magic.h index f724129c0425..2a57a6ec6f3e 100644 --- a/include/uapi/linux/magic.h +++ b/include/uapi/linux/magic.h @@ -105,5 +105,6 @@ #define Z3FOLD_MAGIC 0x33 #define PPC_CMM_MAGIC 0xc7571590 #define SECRETMEM_MAGIC 0x5345434d /* "SECM" */ +#define MSHARE_MAGIC 0x4d534852 /* "MSHR" */ #endif /* __LINUX_MAGIC_H__ */ diff --git a/mm/Makefile b/mm/Makefile index 6f9ffa968a1a..51a2ab9080d9 100644 --- a/mm/Makefile +++ b/mm/Makefile @@ -37,7 +37,7 @@ CFLAGS_init-mm.o += $(call cc-disable-warning, override-init) CFLAGS_init-mm.o += $(call cc-disable-warning, initializer-overrides) mmu-y := nommu.o -mmu-$(CONFIG_MMU) := highmem.o memory.o mincore.o \ +mmu-$(CONFIG_MMU) := highmem.o memory.o mincore.o mshare.o \ mlock.o mmap.o mmu_gather.o mprotect.o mremap.o \ msync.o page_vma_mapped.o pagewalk.o \ pgtable-generic.o rmap.o vmalloc.o diff --git a/mm/mshare.c b/mm/mshare.c new file mode 100644 index 000000000000..c8fab3869bab --- /dev/null +++ b/mm/mshare.c @@ -0,0 +1,103 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Enable copperating processes to share page table between + * them to reduce the extra memory consumed by multiple copies + * of page tables. + * + * This code adds an in-memory filesystem - msharefs. + * msharefs is used to manage page table sharing + * + * + * Copyright (C) 2022 Oracle Corp. All rights reserved. + * Author: Khalid Aziz + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +static struct super_block *msharefs_sb; + +static const struct file_operations msharefs_file_operations = { + .open = simple_open, + .llseek = no_llseek, +}; + +static int +msharefs_d_hash(const struct dentry *dentry, struct qstr *qstr) +{ + unsigned long hash = init_name_hash(dentry); + const unsigned char *s = qstr->name; + unsigned int len = qstr->len; + + while (len--) + hash = partial_name_hash(*s++, hash); + qstr->hash = end_name_hash(hash); + return 0; +} + +static const struct dentry_operations msharefs_d_ops = { + .d_hash = msharefs_d_hash, +}; + +static int +msharefs_fill_super(struct super_block *sb, struct fs_context *fc) +{ + static const struct tree_descr empty_descr = {""}; + int err; + + sb->s_d_op = &msharefs_d_ops; + err = simple_fill_super(sb, MSHARE_MAGIC, &empty_descr); + if (err) + return err; + + msharefs_sb = sb; + return 0; +} + +static int +msharefs_get_tree(struct fs_context *fc) +{ + return get_tree_single(fc, msharefs_fill_super); +} + +static const struct fs_context_operations msharefs_context_ops = { + .get_tree = msharefs_get_tree, +}; + +static int +mshare_init_fs_context(struct fs_context *fc) +{ + fc->ops = &msharefs_context_ops; + return 0; +} + +static struct file_system_type mshare_fs = { + .name = "msharefs", + .init_fs_context = mshare_init_fs_context, + .kill_sb = kill_litter_super, +}; + +static int +mshare_init(void) +{ + int ret = 0; + + ret = sysfs_create_mount_point(fs_kobj, "mshare"); + if (ret) + return ret; + + ret = register_filesystem(&mshare_fs); + if (ret) + sysfs_remove_mount_point(fs_kobj, "mshare"); + + return ret; +} + +fs_initcall(mshare_init); From patchwork Wed Jun 29 22:53:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khalid Aziz X-Patchwork-Id: 12900737 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 8B560C43334 for ; Wed, 29 Jun 2022 22:54:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CBD176B0071; Wed, 29 Jun 2022 18:54:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C45846B0072; Wed, 29 Jun 2022 18:54:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A99BE8E0001; Wed, 29 Jun 2022 18:54:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 9486C6B0071 for ; Wed, 29 Jun 2022 18:54:53 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 6964F6099E for ; Wed, 29 Jun 2022 22:54:53 +0000 (UTC) X-FDA: 79632780066.11.3BEBCEF Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf03.hostedemail.com (Postfix) with ESMTP id E7CCD20028 for ; Wed, 29 Jun 2022 22:54:52 +0000 (UTC) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 25TM4FJA014302; Wed, 29 Jun 2022 22:54:23 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-2021-07-09; bh=UUyy2UnSoeAmxHvzrhBw95NPqAyaew2eKBtTWDsLqc0=; b=A91PQj05ozlTfpxdn2XYcV2izF0V6QdJ/+j0my2ml1xOfnhrxwRiK3dPgdq+q0SzepKz RAgy8UxNEMX5kA6iqe6VDjvKeJwxUSfJ8WipdFYCdIZoZv0kwy7xbhPV76DP6nlXExPF oB5ez0XxCgetiUeaXI1F5N9wG+yngqcCT28JpZwaTqExe0d1soSjwfTit9bvch7jKEkc qDPUrxRZZOjLCUjD0fOdPDcjq+wkkuy8apMf4l9e+X8IE3+EvnFTI1FRBChOGtmDvyF3 YjdbCSR0GySIcsrCsLwM6cZyLaOFxhmZsDmVbjNJ6E+zkG51zJ4LAEUWGLCsv7U2iARN fA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3gwsysjgua-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:22 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 25TMew6v004169; Wed, 29 Jun 2022 22:54:22 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2175.outbound.protection.outlook.com [104.47.55.175]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3gwrt9h64u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Db7KhGa5F6hDVJ4nt2ILjspU0hMff4S9ywTZiEhjup0DUvfpyw1rvy00NepBT7dV0n8AYB2ONPd9SpTKnfn5PBP/GgrGgcarJcHvpIRb/kkNEcRq1sFCBuSCx3TD3DQuJVvKul+QHUffCJOmaW0tDxse2aRDr8uq9Bg3fgjMqdc4mJEX6mr2CuvExFHWljFvfLecS8NrP+FewAAMUbMDbxG/yQ+DEW12p7atKVwOCQ+62yIB998Fl00oPQf7h3VY87e8NiUoieBd6Vv7OyQEO38u4yGJmf2HV0AT0AoO8NOUUy3EYmE4gF6bq+vCbNhf7nkBzUauJ1H+xYq+cWAjKw== 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=UUyy2UnSoeAmxHvzrhBw95NPqAyaew2eKBtTWDsLqc0=; b=n7Yeb65LsBaqp1efKubW6CtmikMecQ2JjvHEnwj1bL4PqNjl7p2HWQdeG1EZ1Lflkn5TdsoE66PorB3gT6L5TDHYW2SvpyvFIGLb5ZpJQ+no7uiVEkv98dsG4F9wh1Y2IIKYbqK8u4wXCaBlZwwJO71OTZQbx1kaUO10cTUtR3jqVYx333G4xN4Gig//3wCEr2rQDMOW9/XocSfAp01z9p0ef2CiYM68irPk6frBs48/ZG3DgaBTwQOs6t0e8iH9n9rHEfZurZLq0nDVnNSVXcuWJ9P0QGvoVj26hGkV8bXHBJ1fgeB/6smNvSw7uQoo8hTKDlLMa/2I8Y96and5Zw== 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=UUyy2UnSoeAmxHvzrhBw95NPqAyaew2eKBtTWDsLqc0=; b=Vu5igyju866BzOpx/y7N8s5pL7OAzJ6LJMJIFCO3SaXuqzVd5Ghd3Pq8Tzel91hpjHhBtIg10d62mTAao3TWeaRO1+2f63wO6+5GHurt2qLjrgheyNse+GLXg9wfw9ek3LiZY7SCU9ZK6oB7bIoKPs6UNPl1o68dxRq72Q214B0= Received: from BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) by DM5PR10MB1834.namprd10.prod.outlook.com (2603:10b6:3:10b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Wed, 29 Jun 2022 22:54:20 +0000 Received: from BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2]) by BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2%3]) with mapi id 15.20.5373.018; Wed, 29 Jun 2022 22:54:20 +0000 From: Khalid Aziz To: akpm@linux-foundation.org, willy@infradead.org Cc: Khalid Aziz , aneesh.kumar@linux.ibm.com, arnd@arndb.de, 21cnbao@gmail.com, corbet@lwn.net, dave.hansen@linux.intel.com, david@redhat.com, ebiederm@xmission.com, hagen@jauu.net, jack@suse.cz, keescook@chromium.org, kirill@shutemov.name, kucharsk@gmail.com, linkinjeon@kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, longpeng2@huawei.com, luto@kernel.org, markhemm@googlemail.com, pcc@google.com, rppt@kernel.org, sieberf@amazon.com, sjpark@amazon.de, surenb@google.com, tst@schoebel-theuer.de, yzaikin@google.com Subject: [PATCH v2 2/9] mm/mshare: pre-populate msharefs with information file Date: Wed, 29 Jun 2022 16:53:53 -0600 Message-Id: <34e2eabbef5916c784dc16856ce25b3967f9b405.1656531090.git.khalid.aziz@oracle.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-ClientProxiedBy: SN7P222CA0021.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::6) To BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2720452f-73cb-4c53-324d-08da5a224d7d X-MS-TrafficTypeDiagnostic: DM5PR10MB1834:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5XFvvZaIXM6W7MqqZp5GqDmGpKoTnRNc8kSJD20JrDZjxkeCmtKSl0+yj+UiQGvJ23JjAdtubQXb7qjfjo9vCKWxl7ui/9KjQS9SFdRXM5GFQXyHcoZ0desuUWyd1GZgZbQKvTG040DPiu0ISqxPdIRIEbzwZDtjCLIBHNhH8R4QSpzdFPJA/Der/4zXO/cjqJmc/jenH3FObNyG25NP2fCyxkZaXhu1O6s7HbZzPpRnOfY7G7hF5EwWrWWHmcZUQJHMrYT0mjPj1el/w0zcJsI4O+ljFT3c86240M6Z2Fl2Hu0Z227+bURV6eisqDZnmPeao3q1VWRPsCSsua3/CzH4WdBh64CSygkVPUDUh4rKC/WpHIWtR/TdG+wjEKdFq91RNvmLlfJE52WpNkeJYWwlrHpxPddrtpr+b2nNd6KGtInw/wx0pZ8aLJ6yJ1YPo181siXdd2Yg7ZIyjWl1N9uJ2mnJbWOlwcNNjIegZxSjQ9Mg+Ss3Ay/lu1KhfeT7B4v5ELxVcIdLiv+rkbuW8+m9bKBaETBTYEMNe+AWJSU1PMm6q9DUPt4FQjrHo2FFcCMrNuTw/TqvxFbXqKxb9U4mKntdG5x5w+zUtaVrci3M7Qs9mj9+StaNBMCuSe6oSOt+ePfDj6bxD0xz7uTij9vtzHjLw74YczzBluLHhkaykmxY1y902dciAKOgaeJbLphFA0ck3uTxLSrBFOhKeOsDNw0iqynu+rg66Apmtqg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR10MB3220.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(376002)(346002)(136003)(39860400002)(366004)(396003)(6666004)(52116002)(41300700001)(186003)(6506007)(8676002)(66556008)(2616005)(6512007)(66476007)(38100700002)(83380400001)(44832011)(7416002)(8936002)(316002)(36756003)(2906002)(86362001)(66946007)(6486002)(5660300002)(478600001)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: akrGa3boN0r/xq56he74ZZF7u3KT1zArnHw4se9uH8zHkjBANeruFG4959tKtA918y7b3dWHyMwvEIcX1rccGC00Gm4heLtoW4fLlD49kIRhpeW7ZOTU3V3Z08dthBVjD40qzynKs76dHrqitO7aUID9kDQupjYVbl66POZbyOIjXaeFdm8HB548sNLLfV95xZbSDSZ8iOu1jPlWzRYlQAWUcOo1EYffQMNaJEw3KvfpmBrpHdQinh0g876ZDWy5aFah2ODBMB7iTu6kBS6vRmseVRhdv/CAPki10UeYedXKi/ZT03L6CdtL74eQmHe+aNDstK4fTxvLVhbQwRNjisDXLs2LJQUdbUzK/xExu6zy5s0WKID1BrW8KAJpOx5qCboyVZZOy4Xbx+q/SESoeLVVEX7pgZZ2z8ROqWen6kcAz7TiCbHav4EEjJ1P9L4xSl7y2Oq3gOtZHgSDupXyRh/XQv/A42NgXnpCr8ssSQchZadfabKy9VjgLrGZ06RrGrnG32j9Qv7bBiMTsSuzhhn9myRpEMnC+UU4TTb/zWDZBq4hnzPo16XZvMfRgdfEJyBFaGO5tp+6RHRL63WUfyeYwdSSWY7gdihd9Uq4w65lPCpdHzkICAfoMENMpqflkT4TQLusHcOhtTwlH5ZBZ9+rFY5iwtQuS0+sAgKNZ8Q2NXrapq7SA/rAixJfLccVkjW8RdbsOL38lwFjeqG+zqoAoxtHW4GKljFhQHOxe6uf6Sw7iZUcO+w4CYT7qS+meukS/l9c/8wyxTcoCSoCBxE20AUaI3M0oc4IHHx2XwZ/ehowENzcusRIAKu6tNO3Y4lyv4AeXOBI7HHNkDLTz9prchr0RvSDimxv1B56xOWIrm/BkRYPavfoEJC4quegLXsujsoICj9aWWHfcph7mIJo9oIS0+KCEjYALJWkn6YjIMoRQErBioOoHxdfGGTroVbx1EEg5OqxHTlhV//GTh5cJU3nd0xff8/Ca4742Momqgbt6CwdqH70ZMEy037fqb7IEKi6ETccNhXUux+pdGmrROWICx9GLE7XO7u3uzaoJQAl/RfTb+05kJIaJ4RHmnLzRvrJOXLyu7Oc7Q/goQH29f0Vl6KezpgVOhYup+73zfpL7okGDI1K36AUWu5MbsXiEMkLSlc8bSDcEsxxzTcDHq2wVh/1P+zuyrM6fW+APpGUqFoePs0vwUpKYPeo3AKz8e4jgLFrISs4ryeEqEjHJfAkf8KgS/Lelr1FQ0z+Jq2C0Fv94MHPfXJxF6teWwDLHW+AlH7H5eofHrl2f2MUEnDDp2TgIOlkMLCu4B5vH769+gmhckN/KS1dgH3YVcFyjej3SrLzNeNFOfB6x0p1+3mXA8G/z78Qaz6ioDiENszUJwamhzS2Tve1UBD439HYK7JoqNqEsLtpczkXAqTEf8s/tFTCZNOhxhKKsE1weeKJmdYRn/VQ9lnNDyjoseQRomfFzBBZlIOCRM1fg1weDOy2v4aKkG+moy2qDIxYOwE5TjSJhAdPwN64kb9Y4/NHSBCe+vpN/or90zCdvhGwkcGaMGRg8VMxJ61B1Iu/BKW7BL819ALJOdXd37CCWwy0tgFkXvr8NWYSCWmt02dCt6WozGGW/V+jmXOJjtJjrO9Xis2NvmK2PhqhdYz4 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2720452f-73cb-4c53-324d-08da5a224d7d X-MS-Exchange-CrossTenant-AuthSource: BN8PR10MB3220.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2022 22:54:20.3659 (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: VmrJJePnnSOdWqTEbgM9HKHm1VObuukW3C/v3z8XOBpWzOcb8Kcz4AJ3UMeyvIt7HIuE3liKx8RZHknsBrwPFw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR10MB1834 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517,18.0.883 definitions=2022-06-29_22:2022-06-28,2022-06-29 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 bulkscore=0 mlxlogscore=999 suspectscore=0 adultscore=0 phishscore=0 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206290078 X-Proofpoint-ORIG-GUID: N4kPiss-LAaX1bqhjHQBgZKNtf9rR_3B X-Proofpoint-GUID: N4kPiss-LAaX1bqhjHQBgZKNtf9rR_3B ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1656543293; a=rsa-sha256; cv=pass; b=7agEvXqZ/OSPMoYbBN4Pp0JAl+i8ixqa4TB48QkJGU/mRcyXidqCWSa0FzhMuxeL6DFyxK LP6X1Z+PNUPgr1f7Ckvb0qrmzaV+8AnPORcqtny5xElfGWzFCTTk0pXiEAMwD5YbmMbFkG nzxhAYkqDnuIDlOGo2t73b3O+ZopCHA= ARC-Authentication-Results: i=2; imf03.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=A91PQj05; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=Vu5igyju; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf03.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=khalid.aziz@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656543293; 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=UUyy2UnSoeAmxHvzrhBw95NPqAyaew2eKBtTWDsLqc0=; b=CcTX8LKX0UgCSzaP5WXptj/O2DbmGqL69Ola+TlvxsNT2Go4zfCgYjwiqjzAnoXqetieIk ypoULl4s3qMBAjUlUUSvId54NpCJiEKEG0TLIeqpdUzDYRvTnoCylToMpumU5ViMHHj1OL 1qW7rWKX39c2azAcw0rWlpdnxNolQx4= X-Stat-Signature: 35okz5qgsjrje8ydc8dxmhpoki7h5kyx X-Rspam-User: X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: E7CCD20028 Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=A91PQj05; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=Vu5igyju; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf03.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=khalid.aziz@oracle.com X-HE-Tag: 1656543292-90575 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: Users of mshare feature to share page tables need to know the size and alignment requirement for shared regions. Pre-populate msharefs with a file, mshare_info, that provides this information. Signed-off-by: Khalid Aziz --- mm/mshare.c | 62 +++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/mm/mshare.c b/mm/mshare.c index c8fab3869bab..3e448e11c742 100644 --- a/mm/mshare.c +++ b/mm/mshare.c @@ -25,8 +25,8 @@ static struct super_block *msharefs_sb; static const struct file_operations msharefs_file_operations = { - .open = simple_open, - .llseek = no_llseek, + .open = simple_open, + .llseek = no_llseek, }; static int @@ -42,23 +42,52 @@ msharefs_d_hash(const struct dentry *dentry, struct qstr *qstr) return 0; } +static void +mshare_evict_inode(struct inode *inode) +{ + clear_inode(inode); +} + static const struct dentry_operations msharefs_d_ops = { .d_hash = msharefs_d_hash, }; +static ssize_t +mshare_info_read(struct file *file, char __user *buf, size_t nbytes, + loff_t *ppos) +{ + char s[80]; + + sprintf(s, "%ld", PGDIR_SIZE); + return simple_read_from_buffer(buf, nbytes, ppos, s, strlen(s)); +} + +static const struct file_operations mshare_info_ops = { + .read = mshare_info_read, + .llseek = noop_llseek, +}; + +static const struct super_operations mshare_s_ops = { + .statfs = simple_statfs, + .evict_inode = mshare_evict_inode, +}; + static int msharefs_fill_super(struct super_block *sb, struct fs_context *fc) { - static const struct tree_descr empty_descr = {""}; + static const struct tree_descr mshare_files[] = { + [2] = { "mshare_info", &mshare_info_ops, 0444}, + {""}, + }; int err; - sb->s_d_op = &msharefs_d_ops; - err = simple_fill_super(sb, MSHARE_MAGIC, &empty_descr); - if (err) - return err; - - msharefs_sb = sb; - return 0; + err = simple_fill_super(sb, MSHARE_MAGIC, mshare_files); + if (!err) { + msharefs_sb = sb; + sb->s_d_op = &msharefs_d_ops; + sb->s_op = &mshare_s_ops; + } + return err; } static int @@ -84,20 +113,25 @@ static struct file_system_type mshare_fs = { .kill_sb = kill_litter_super, }; -static int +static int __init mshare_init(void) { int ret = 0; ret = sysfs_create_mount_point(fs_kobj, "mshare"); if (ret) - return ret; + goto out; ret = register_filesystem(&mshare_fs); - if (ret) + if (ret) { sysfs_remove_mount_point(fs_kobj, "mshare"); + goto out; + } + + return 0; +out: return ret; } -fs_initcall(mshare_init); +core_initcall(mshare_init); From patchwork Wed Jun 29 22:53:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khalid Aziz X-Patchwork-Id: 12900740 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 03284C433EF for ; Wed, 29 Jun 2022 22:54:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7B5F46B0074; Wed, 29 Jun 2022 18:54:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 606026B0075; Wed, 29 Jun 2022 18:54:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3BB198E0001; Wed, 29 Jun 2022 18:54:58 -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 1D47F6B0074 for ; Wed, 29 Jun 2022 18:54:58 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id E13AF34EE0 for ; Wed, 29 Jun 2022 22:54:57 +0000 (UTC) X-FDA: 79632780234.27.08DFEDC Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf08.hostedemail.com (Postfix) with ESMTP id 2004B16001D for ; Wed, 29 Jun 2022 22:54:56 +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 25TM4BP3014778; Wed, 29 Jun 2022 22:54:26 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-2021-07-09; bh=JN30TwFDewr2QAMMiNpOmoO5DRJLIhD0oG0NfTQac2M=; b=xiGIYd9f/xMCs857XSbx8dCz5b+Vws1vO6yQuZsYbPgjDVbC0Qyji5o8yui2IdtV/g6O 2+tYZwvuE6rezXusIXumyEyn2vusLBlG6Tdghe0gPZ0QsVxtYDU8pqTlknZRHHr/EEVZ k3xcTIr0NRPizkaGj88D3NvAPJgN3uPFUm4GL39kcj/+cUAKMV8f4edohxv1xQ0IDUet pB+3OiR3s3PkAAKzF6VkvqfJpJFADOpu2JoLj4QS70wlw84Mh1wzltwfmZK1TdtPkba+ 9mHZUrUk61BGf1bhNCDabJwdWb9DLCzQ5PDW/wsuOPmDzvmmda6nfm5wS/T1xFzmSfYp lQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3gwrscjfdf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:26 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 25TMexTD033601; Wed, 29 Jun 2022 22:54:25 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2168.outbound.protection.outlook.com [104.47.55.168]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3gwrt3wyx0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kxqPys6XKCVxMmJox4iFmWF9QVLBovqYrvkkmYc3Fa+eLvkXPBFGEnU8+8SJk085+tGJlKaMD7zEM1DuSVc7ekRS8kTY9hZ3u7Aa4tz/OIR0ywfdyr8UVxa0xDclLBju1k+m8BNhBMatHbW3lgd/RaItaPv3XMMRc46B418QE/wW3dEEkiVGU2QKMDTHDsCPMdZgtU8GFEpL2AD/rc261MFY4NhOnJvnbSHYIkCCQJ6Q4pgPH97MJY4QkhWuYSJF7WBHORktF9zwjWvQ+lDcrz4qffAw06lElaGlwjG1dr0Prj8agJeA3UYWie9JMtG16wwdn81HkJ6SFdoXuIyOVQ== 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=JN30TwFDewr2QAMMiNpOmoO5DRJLIhD0oG0NfTQac2M=; b=GVGx2jmBQizH6ryje/CWBXM+k3qdddt9RSv0cO0BnvRUpudZb3hI4kPmuCWWCb0Fq4eHjB7ZXjbioY7UtvKBTqg9pjb0Lf0zEN37hfApVd2G5yHQB0XE65P+N+482RGZ/nI/YzP5e4kz9Rtx90C3S8ftiXSFxUMJ1c9Y1KPw6nVlzqf36a50TyUt3SvsjoRgXCmbXeO6HCK949uinfXTWOX4dINqcvM46f2Gq6m3ilV2jZlsNt8yoxmqX0QQy6JiZLhC/sUruogb8zAXn4EnpZ2swgAKNlR/XtqCZA+DM/aRfQ3ezLgsGCMicBD5DXPdDXuDq9p+VLb5Msfv9iHj5w== 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=JN30TwFDewr2QAMMiNpOmoO5DRJLIhD0oG0NfTQac2M=; b=y9ni/9qg4P9YfPCtz/x+B1laUaMR57EdQbrUqh9y4NY5CgUWc6qGAs8eZM7loDdqtdVNLPb/OQDxgnQsqPstQ/bMcdODK++fO80qF+oQ4viq3VCFqqsaCd/j3L5aze5bBl/ikhmpQlPuoVkFZuR7ZwX++wJNACgfMspIntj3sEI= Received: from BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) by DM5PR10MB1834.namprd10.prod.outlook.com (2603:10b6:3:10b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Wed, 29 Jun 2022 22:54:22 +0000 Received: from BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2]) by BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2%3]) with mapi id 15.20.5373.018; Wed, 29 Jun 2022 22:54:22 +0000 From: Khalid Aziz To: akpm@linux-foundation.org, willy@infradead.org Cc: Khalid Aziz , aneesh.kumar@linux.ibm.com, arnd@arndb.de, 21cnbao@gmail.com, corbet@lwn.net, dave.hansen@linux.intel.com, david@redhat.com, ebiederm@xmission.com, hagen@jauu.net, jack@suse.cz, keescook@chromium.org, kirill@shutemov.name, kucharsk@gmail.com, linkinjeon@kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, longpeng2@huawei.com, luto@kernel.org, markhemm@googlemail.com, pcc@google.com, rppt@kernel.org, sieberf@amazon.com, sjpark@amazon.de, surenb@google.com, tst@schoebel-theuer.de, yzaikin@google.com Subject: [PATCH v2 3/9] mm/mshare: make msharefs writable and support directories Date: Wed, 29 Jun 2022 16:53:54 -0600 Message-Id: <397ad80630444b90877625a1e94dd81392fc678e.1656531090.git.khalid.aziz@oracle.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-ClientProxiedBy: SN7P222CA0021.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::6) To BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 89f1ae8c-776c-42ab-6d3e-08da5a224ec1 X-MS-TrafficTypeDiagnostic: DM5PR10MB1834:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TvOMdoY9lU2Z3Vt5i+ht6x2LKUG5MUaV6G5akCXAtdMBxbXrHL+Z54ol1Qr1g9cnP5eeDRnzFh45kJu/bj73G39d/GV8XAlmPV2JKwT2caKjLtZblblRRaO7uCheTnf8Dz7ne/14Gyn+TNJiPsmR4lFATAJDYQhBilTpKPVUeK1PFY3BW3GikBXfDozNq4ofMciBwSIMjXTNstBV5rj7eFeZBUrq1QbTGRnr/j8mK44lihEDRTVc8zv+C04lKApt5X9Un8TwKGVw8eritl3A9Cn8bfXRMl0b+HZhItxYvhmCJmKJLAbf9NVNecl8zGmWZ284NP+U67ZssmqpEF4p9ImaDNTC16R7a/xkXoSF+8wATb6vCncCvA2QWmjlNXg74nPB5xMqgjkayilb1i0gWBi0Mq3u5a5/odtbKBTUgWFJsIPItTfuUiuuj89EurRiyDl+l7Xz1eqXL53wRcrs35sbicXphZfskYyj5+KJiBgnQlNd9GaafHVf+mnAuIz/xXnODwDr07+enmFwjUZXgCvsoLaTTsik/MaqW1q3GRjVZuRoxawZGOYsZ1DOrAI7J235XYqXDIu2tzjBki4M6/+P89C4W2aXrRXlq0CaysRYWhlM0vEYO2KUaA0puu/0hEfjbvRnao8uUfJKiXvXkTc9zRmKQZthe9Q/d+47fERUpofs9GHozc+hBkOBGiaku/3Y7nXtp+1ub4KEaCFyhO9KhSrQruLAYfPmDMlbb/I= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR10MB3220.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(376002)(346002)(136003)(39860400002)(366004)(396003)(6666004)(52116002)(41300700001)(186003)(6506007)(8676002)(66556008)(2616005)(6512007)(66476007)(38100700002)(83380400001)(44832011)(7416002)(8936002)(316002)(36756003)(2906002)(86362001)(66946007)(6486002)(5660300002)(478600001)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5LOwC7whcotThAtb98K2b0DZ1yWE2VQcudoZffMdPnBHSzMC+XXNj45ai+pDFsapu6QJPJiWuUDzN5biiMxsX9XvQra97QUPoAkFiftpJZOjIrRjFckmwbhGy8sbpfXI/+GFTmBcUETc00r+qxqFKh3IDvsnJXX+SJxEKDp2PJxwoaZWiC+RWjyctgMO7ERwJeM+ZYrd4aNDh66sViPZAV583KNYFLjSKq/zwVAdv440TfaMdI8LAEIDCR7tuDYG6UDP1XhtRWG1psiRs+LSzniHE5ZaAXfDZcopEV9bZd01TxHQ12T0/XmCNXHUNyzA+HCDFCD4Gr2OMgRLZ3gfAtc0IeW/ie38f8QOUia8kQPLKNnlVDVVrPghbd1noItf3D1Ql/RadzfP3CU5/+N9MQayJVWP/b9o0jLtaJcm2sARgpjxp2MKRh9m8K9fdtJPdf0x0JFQHdtoEF8RjCw9vQfPb0pdrLDJFdcf4v7h9tmHkBlzTz877UUEXKfKHydNg/pKPXOjmIeww3eUEpDOR06KJvEfkIY4Wh+RRmj2VkaMFdFCRJIpX7NglTdxF8rvpnL246jJb2BuRe2+d5HYYUkQelcmcD/GhNUTflkagxsFjAo3vVR2+C8nhKvbeftpIPbSk9jBaT2/zKYHlvPct19nTsHOVZAhrJ6xWs0wsjmYr3vrNPF8lSFl0IVa6MOhosxoYisUx35xGAM/SSSa0MMeraYbfTm3RbtOZQKWGoD5JL/kMMLAGHh9k4lW8yxH3TTK/YZY148sJWBhndGybxbaPZd8r/mKKPd9cH2R//wch5VLBdZmbf+eeZDvzCIYsphm0trHFNX2jeWpv0wOeF4YruFqfw5645VkdaYeRzet00mf0Ewwx20jVEIN0LtxjkAPYi/MgIiKYK5vDWiC9sPlUfgCpWt1ryb+aBj5KDYWvpzWLoMVuU7cQeUrk9li68MJEWFntZMeoE+z9wZ+daM1Dyu2z94ZPCVJck0LbZh7e1xiQWsyRiWdt5K1mA4K97nRbZGDIqYgwmMfIhfXH7eUmQ66P4pu4qrQaewpPmkFMp0Wiw6cOvcuDzHZkX9nY3KxO2nqi1EgQfqhSiA3OcwBcPi81L+oH3I6nz/1awyr9EheC8jhBMVlprIPRs5fEkSX2aAsN+Qy1wxvOmcYZc9m//XZjrUl7LvWo9EE08jLjCr0snrKkcxY99/q+dgYto6do/3E9fCLvU0MhKWLitAH2tDjHlm79X0O/KNpcBhwBvhcJjvn5j/m9wP8XpVVARMUlz3NIW2SUcpfJvI+LuDgxTvOX+wS9ACnCiXE/gq+IFk/i2LRSwbuflBg36//PgBx6P/onNkib18CuJtOPkqALVuwUxkrGOW2WNjTUYd7ahKMk70njMTOQN0I2rL6DeaaBPLLMAcrR3VKdF4y3ZG4pmPLVPPPFoa7Jt3gZieQkY3PhPIGhePSEk1KZzUMLMgdHWENuG8BCcO2ZArAXZjQ8dEecSt030/gC9ZxirBdt/iJN0TmqhpjamPM7kNMgk30zcJdqHvq0Kp3Rbp+yn4EyWqad5dcciCmaEW1j3QhG2a3k8gbGIN7dgcUYHBTsuqcg85hTcu9JBCdfJyzo/0pj+vj2u5wY2Ie+o3WlX6aKQ/aqBPgduEDJeLMhGiv X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 89f1ae8c-776c-42ab-6d3e-08da5a224ec1 X-MS-Exchange-CrossTenant-AuthSource: BN8PR10MB3220.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2022 22:54:22.5377 (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: HPzZC3+RaheVNwclfPK7IFrZrq1zwAGHEuPc1KQG3y6jlw4+XdrWHq246lVOmec19E543aO1RpBWfePmuUmhQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR10MB1834 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517,18.0.883 definitions=2022-06-29_22:2022-06-28,2022-06-29 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=807 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 bulkscore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206290078 X-Proofpoint-ORIG-GUID: cttYVK8PRrb9YnjQKWbem_T-if2Bz2V9 X-Proofpoint-GUID: cttYVK8PRrb9YnjQKWbem_T-if2Bz2V9 ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656543296; 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=JN30TwFDewr2QAMMiNpOmoO5DRJLIhD0oG0NfTQac2M=; b=setBV/Jqfu8yYk7vYrrg8J71ZJ9nscqVG+Uji1HqGLdRo71k00IDox2EvxJNjRO9cg/CKS ZbKOdBE2Gaoqvixeq5zG/LaDQZT1s8kvkz0NCU5YAoJ7tpo6EPnI76ARc5/vYPuBj4TLyk vm4vt0W88C7EPtvJVuKDS7gvTX1tcwA= ARC-Authentication-Results: i=2; imf08.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=xiGIYd9f; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="y9ni/9qg"; spf=none (imf08.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=khalid.aziz@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1656543296; a=rsa-sha256; cv=pass; b=43QlxV0UztDK8hMz49u7PbMBzFKFD5CKrKS33ll3CMgug7USwy1zfkhofjdz0nO/YINCMC MHBk5guVCBYGIohWpoegIKN2mNPepXzpiSGdP/WsPncX1eCGQ3DWjLB2FCrjisJiGqJPd+ H2EPgQp5T22TejiHcqRMGBWX0LPAMEE= Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=xiGIYd9f; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="y9ni/9qg"; spf=none (imf08.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=khalid.aziz@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com X-Rspam-User: X-Rspamd-Server: rspam06 X-Stat-Signature: tb856o7ajjz4yke6ra7hjhz4scr7bu1n X-Rspamd-Queue-Id: 2004B16001D X-HE-Tag: 1656543296-325637 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: Make msharefs filesystem writable and allow creating directories to support better access control to mshare'd regions defined in msharefs. Signed-off-by: Khalid Aziz --- mm/mshare.c | 195 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 186 insertions(+), 9 deletions(-) diff --git a/mm/mshare.c b/mm/mshare.c index 3e448e11c742..2d5924d39221 100644 --- a/mm/mshare.c +++ b/mm/mshare.c @@ -21,11 +21,21 @@ #include #include #include +#include static struct super_block *msharefs_sb; +static const struct inode_operations msharefs_dir_inode_ops; +static const struct inode_operations msharefs_file_inode_ops; + +static int +msharefs_open(struct inode *inode, struct file *file) +{ + return simple_open(inode, file); +} + static const struct file_operations msharefs_file_operations = { - .open = simple_open, + .open = msharefs_open, .llseek = no_llseek, }; @@ -42,6 +52,113 @@ msharefs_d_hash(const struct dentry *dentry, struct qstr *qstr) return 0; } +static struct dentry +*msharefs_alloc_dentry(struct dentry *parent, const char *name) +{ + struct dentry *d; + struct qstr q; + int err; + + q.name = name; + q.len = strlen(name); + + err = msharefs_d_hash(parent, &q); + if (err) + return ERR_PTR(err); + + d = d_alloc(parent, &q); + if (d) + return d; + + return ERR_PTR(-ENOMEM); +} + +static struct inode +*msharefs_get_inode(struct super_block *sb, const struct inode *dir, + umode_t mode) +{ + struct inode *inode = new_inode(sb); + + if (inode) { + inode->i_ino = get_next_ino(); + inode_init_owner(&init_user_ns, inode, dir, mode); + + inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode); + + switch (mode & S_IFMT) { + case S_IFREG: + inode->i_op = &msharefs_file_inode_ops; + inode->i_fop = &msharefs_file_operations; + break; + case S_IFDIR: + inode->i_op = &msharefs_dir_inode_ops; + inode->i_fop = &simple_dir_operations; + inc_nlink(inode); + break; + case S_IFLNK: + inode->i_op = &page_symlink_inode_operations; + break; + default: + discard_new_inode(inode); + inode = NULL; + break; + } + } + + return inode; +} + +static int +msharefs_mknod(struct user_namespace *mnt_userns, struct inode *dir, + struct dentry *dentry, umode_t mode, dev_t dev) +{ + struct inode *inode; + int err = 0; + + inode = msharefs_get_inode(dir->i_sb, dir, mode); + if (IS_ERR(inode)) + return PTR_ERR(inode); + + d_instantiate(dentry, inode); + dget(dentry); + dir->i_mtime = dir->i_ctime = current_time(dir); + + return err; +} + +static int +msharefs_create(struct user_namespace *mnt_userns, struct inode *dir, + struct dentry *dentry, umode_t mode, bool excl) +{ + return msharefs_mknod(&init_user_ns, dir, dentry, mode | S_IFREG, 0); +} + +static int +msharefs_mkdir(struct user_namespace *mnt_userns, struct inode *dir, + struct dentry *dentry, umode_t mode) +{ + int ret = msharefs_mknod(&init_user_ns, dir, dentry, mode | S_IFDIR, 0); + + if (!ret) + inc_nlink(dir); + return ret; +} + +static const struct inode_operations msharefs_file_inode_ops = { + .setattr = simple_setattr, + .getattr = simple_getattr, +}; +static const struct inode_operations msharefs_dir_inode_ops = { + .create = msharefs_create, + .lookup = simple_lookup, + .link = simple_link, + .unlink = simple_unlink, + .mkdir = msharefs_mkdir, + .rmdir = simple_rmdir, + .mknod = msharefs_mknod, + .rename = simple_rename, +}; + static void mshare_evict_inode(struct inode *inode) { @@ -58,7 +175,7 @@ mshare_info_read(struct file *file, char __user *buf, size_t nbytes, { char s[80]; - sprintf(s, "%ld", PGDIR_SIZE); + sprintf(s, "%ld\n", PGDIR_SIZE); return simple_read_from_buffer(buf, nbytes, ppos, s, strlen(s)); } @@ -72,6 +189,38 @@ static const struct super_operations mshare_s_ops = { .evict_inode = mshare_evict_inode, }; +static int +prepopulate_files(struct super_block *s, struct inode *dir, + struct dentry *root, const struct tree_descr *files) +{ + int i; + struct inode *inode; + struct dentry *dentry; + + for (i = 0; !files->name || files->name[0]; i++, files++) { + if (!files->name) + continue; + + dentry = msharefs_alloc_dentry(root, files->name); + if (!dentry) + return -ENOMEM; + + inode = msharefs_get_inode(s, dir, S_IFREG | files->mode); + if (!inode) { + dput(dentry); + return -ENOMEM; + } + inode->i_mode = S_IFREG | files->mode; + inode->i_atime = inode->i_mtime = inode->i_ctime + = current_time(inode); + inode->i_fop = files->ops; + inode->i_ino = i; + d_add(dentry, inode); + } + + return 0; +} + static int msharefs_fill_super(struct super_block *sb, struct fs_context *fc) { @@ -79,21 +228,49 @@ msharefs_fill_super(struct super_block *sb, struct fs_context *fc) [2] = { "mshare_info", &mshare_info_ops, 0444}, {""}, }; - int err; + struct inode *inode; + struct dentry *root; + int err = 0; - err = simple_fill_super(sb, MSHARE_MAGIC, mshare_files); - if (!err) { - msharefs_sb = sb; - sb->s_d_op = &msharefs_d_ops; - sb->s_op = &mshare_s_ops; + sb->s_blocksize = PAGE_SIZE; + sb->s_blocksize_bits = PAGE_SHIFT; + sb->s_magic = MSHARE_MAGIC; + sb->s_op = &mshare_s_ops; + sb->s_d_op = &msharefs_d_ops; + sb->s_time_gran = 1; + + inode = msharefs_get_inode(sb, NULL, S_IFDIR | 0777); + if (!inode) { + err = -ENOMEM; + goto out; } + inode->i_ino = 1; + root = d_make_root(inode); + if (!root) { + err = -ENOMEM; + goto out; + } + + err = prepopulate_files(sb, inode, root, mshare_files); + if (err < 0) + goto clean_root; + + sb->s_root = root; + msharefs_sb = sb; + return err; + +clean_root: + d_genocide(root); + shrink_dcache_parent(root); + dput(root); +out: return err; } static int msharefs_get_tree(struct fs_context *fc) { - return get_tree_single(fc, msharefs_fill_super); + return get_tree_nodev(fc, msharefs_fill_super); } static const struct fs_context_operations msharefs_context_ops = { From patchwork Wed Jun 29 22:53:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khalid Aziz X-Patchwork-Id: 12900739 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 E35A8C43334 for ; Wed, 29 Jun 2022 22:54:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 210C36B0072; Wed, 29 Jun 2022 18:54:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 172248E0001; Wed, 29 Jun 2022 18:54:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CE3B96B0072; Wed, 29 Jun 2022 18:54:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 9D9976B0072 for ; Wed, 29 Jun 2022 18:54:54 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7AE73BFF for ; Wed, 29 Jun 2022 22:54:54 +0000 (UTC) X-FDA: 79632780108.30.7370C00 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf27.hostedemail.com (Postfix) with ESMTP id F361B40041 for ; Wed, 29 Jun 2022 22:54:53 +0000 (UTC) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 25TM4BJX014124; Wed, 29 Jun 2022 22:54:27 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-2021-07-09; bh=bu6Kg8V6EURiP43d9/pn7l+bO/MiGGXeBd3HJz6VVj8=; b=D3/4oE1ECUbV+38oNcl25j+PmHel0RLAtMJLl542NeziuvLC3X8vtq263kX2AOVXTHkf DHjc6+HFDReojXyQC72NXEPjw5UbXZBQ4LtK+JjTPLvAMva1mwzIceUOf1LB6qzWXMS5 DTlCRbAYgo+Yf+DHzx+fbO1uhTBV+PcF/WoAaAdVH+tGslDmGWcvLc0B2LcbvIqVjO0O 3c5o52CiRcMu3r9+dr0waoT0PFiLMYY61jvQErvuZdFDrU7j+IA9fIFlXfc4CT5GynMJ Rhh6ZZ1stndSuaeQ1AF7/xE4t54J6sPOxt/R2geXbnkn6RwV9gtBzZo8jJyFAQpUeFzI bg== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3gwsysjgue-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:27 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 25TMf8oU003611; Wed, 29 Jun 2022 22:54:26 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2170.outbound.protection.outlook.com [104.47.55.170]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3gwrt98nsb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mKwXqWZiZpZKbJ370CH/kqhj+/3jey5EtrdJfrFSTKM+fACjbD31ZU776Mb/mMZ3/GNkFv3bq8ZdFXou3CqmkwnaSIx+U7i++gYYnGqz/crS0bxeBxj/Y4lAy59wtTIxTUjySctaOlHsqVeweQqgYtGogtCJhU9CfCTiPFxdK6v8PRPP5qB59nwDCoIxO0lJce4D0i8fj6kCJTGgt/tBSvP3r/syis6w14gv4n7Eq0TsDkynFZxQRd4iBFWCuGDa8Ja1m5l8YxmTNrvDt99GXiyrz6AxuazViFrvsIS2N4xjds0Q4Evdpzhvb2wExkKhtRNu1mi+SQFyIwdZ1IHi2g== 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=bu6Kg8V6EURiP43d9/pn7l+bO/MiGGXeBd3HJz6VVj8=; b=XvuUy4i692zqDxNtpVl9tXde9R+yqJOnu3Zof2oXjADhMJ72MNcUXZ87GFvVSx/7qznZeH3iOxV970p/Oh66CCZrAiLT78ZqYHvV1Kn4tJPMw3b5SSCvZDI1dIzRWHl3AtioBPfR61F+bpum0aSGsXLzIZkLdE9kw5GyqdTzaptYMKrs1Hnm3HLoP0j3IQ+snQJJFiB2GyTSXXHKSM/f9DhTjCBjp3qA02kgf8uCMXqxRpHbkMHb7cRm5/apsHTFXZ+V6DVGuN9OmxGY9p/Bp7NZA/aub7PNsH1z7AQFoDwK9Fu12vlHOrsJhtAT75JLgEZov7NiUEflVKxG4BI7eA== 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=bu6Kg8V6EURiP43d9/pn7l+bO/MiGGXeBd3HJz6VVj8=; b=wjQIutiE6xIYA5qB7y1slmX77AVTExZOSOowTTHxvv5N8DEuaAdxORSmo7Mg8xOKVjuVBovpQFz3mRahzI9k+Ap1pHX3XIUA3usg8fxZ+0UU7hx8M0NQ3fec6NYujIN8uFvFTUfoX6e2QR09aYI8YHyrbA74ZF9l9Om0QzDNbf0= Received: from BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) by DM5PR10MB1834.namprd10.prod.outlook.com (2603:10b6:3:10b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Wed, 29 Jun 2022 22:54:24 +0000 Received: from BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2]) by BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2%3]) with mapi id 15.20.5373.018; Wed, 29 Jun 2022 22:54:24 +0000 From: Khalid Aziz To: akpm@linux-foundation.org, willy@infradead.org Cc: Khalid Aziz , aneesh.kumar@linux.ibm.com, arnd@arndb.de, 21cnbao@gmail.com, corbet@lwn.net, dave.hansen@linux.intel.com, david@redhat.com, ebiederm@xmission.com, hagen@jauu.net, jack@suse.cz, keescook@chromium.org, kirill@shutemov.name, kucharsk@gmail.com, linkinjeon@kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, longpeng2@huawei.com, luto@kernel.org, markhemm@googlemail.com, pcc@google.com, rppt@kernel.org, sieberf@amazon.com, sjpark@amazon.de, surenb@google.com, tst@schoebel-theuer.de, yzaikin@google.com Subject: [PATCH v2 4/9] mm/mshare: Add a read operation for msharefs files Date: Wed, 29 Jun 2022 16:53:55 -0600 Message-Id: <05649b455e2191642e85cc5522ef39ad49fdeca3.1656531090.git.khalid.aziz@oracle.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-ClientProxiedBy: SN7P222CA0021.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::6) To BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bcbe23e5-7238-42f1-45d4-08da5a225003 X-MS-TrafficTypeDiagnostic: DM5PR10MB1834:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aBMZGCd+K87z5P82rBeTvjdKzQmPVb6EGxZKAktrda2E1pBCVVykrTsEm1BjqY73i4xb0T7JySkF9PQyqFTDVjHoG4J+/xFurwBv/YNXs1LcQeqZkVdH1CU0NbAnWcpgsTVuUhr5opIjPJoEGOBqCYN9a0joziJDdzq5kqoAzxVzDtHi9dDGTJ6N1FmPcwBeRhHy7tGW2FqsONdmoSBplmykJIhZMp1l8SiqgvY9la3NcSTCp9pKKwAexYaQxADRauRkxxlA1rI4GNwuo5fbdKX+ZT2wAou/VQ1WHBVkO9QmgpT0S+C8Ji1K5AOBzQrCkhl7IDH6GTT3MUDpFHcDcTXYn+YASltk+m6GI+w77QIA1usAM3tvHgg3AKc0wNHzmSVammQ57OHokVRtYDkz6SUaCT8LmctP0mSpVdYgTr9vmXwpBYvufVjLZRej54WR4BrP7Klc8DOyuCxU4WHU5pLaZSM+m/NEPEckJ5AJZOOB2dt4BqJJsajz0WGNt/tprLZs657WbyD3AeQnbZag1yLWc3SfI69bWeiaKvWcpWR+45L6XEgPSbI/wAQ5VqiRf+Csy7p1gqIoiki7Zu1RdyP1lLeespRe8MoLBBdzkV5cnO0NVeUHbFVOBxCv2Sgys/d5ixw8QywaMuaE8jR0PeUI39LDhjJ99wLudNxxVsrQkh3WVXxA/E02nFbXx0YCgpBlLDMYQC0DHiA2+ntpYc2sKgNE8n9k/065frkpBQQ= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR10MB3220.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(376002)(346002)(136003)(39860400002)(366004)(396003)(6666004)(52116002)(41300700001)(186003)(6506007)(8676002)(66556008)(2616005)(6512007)(66476007)(38100700002)(83380400001)(44832011)(7416002)(8936002)(316002)(36756003)(2906002)(86362001)(66946007)(6486002)(5660300002)(478600001)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ArbjledstvDtFehzXPhh1DPhMbcACud7ChR6p3vfIWCgqA79YIsiAOsWANBfos/XNzuTOx3rGS/ZCRrjybjrGIcRj+RXHwKDeFHaFcz5N1VV0VffQyDUKesfr7vFJF1afLvdKBLOe7JV/XWWwo2aB609TmuggZKbCeZt1ZSivoeRlB43N4nCjRV2uLr5VV+lAeFcO9ZW9qMIIC3lXpoqly1+sJ+d5fsY0UkWdkSlmqlyu6Ms/9sqRrYPUakQGasksARcCjLxmgm0BYUx6sba+TTnPF5zbOt3sPFylr43a/Gb22LxeA8iLUCZFATsRVzx4rL+l4n/wy/oNwK+DnFNvp0uV4CtqT03K7hjDhh260tiKyw5rn6WnsAxeDv9OnCMY6zSEJceUVVq8lFquClQtCmhVNRXGb30BXCYwfK5peTy0PvrCLtMF9gVE2wTEltJVoFr8Kn+858h+lVv6vdIg2F/bMjvlpijPqvGxGXVsFh94cfNlINriiGgVd/wsUvztefQTnrMMYCoNdEduIK/8Qg+v368H9atrbgky0k7cGDWU7Rpd0DVeKc1He9zTMeB0/S2Sd1UodUb2CJokvcfqkHrm62SJOdom5n5Z1EUIxEgek5i6j6IC2CwYxY7hwRqSJl690+srnPfSHi86BCml4/D5/wc0RRIVj2sVFYJs665Puu9vbgpIDe2rmfjTekXnOhtu92Xmn1QPzi/Qq1yms0WNafDp9nyn/kXaHMatpv3GnMNAgfL57o/m4mpsH1ScpKnihPQ20y9NgC2puU7svz92HT6qOUrN3zR4KMXWmbV/R9/i7VyGPw7BEYo49qF3MTbGmWBplJdVcrWREoHOpPutu4gA9R0BZO7ZHLOPc3Q0zX7BNTikSOP8+Z6sRuZC7H0Uh9w7QbtoHxQR/4KMIyrkgHCVc8wdcMHzksFxnt9N9+JIyauVN96TSeLxsjA9H/tssams01o66e4xdhtM2j2DGvj3URXnt9Z2yx/P17lcDF9cAwwVy+gxqKiFsM4Fl5Y2rNP+2/J7d7o95cckmwyvPnb0tFfK6Voan9syxQ0UFmvIekka9mZlXOvdDeoK240Qdjrl8O9Q6zJh6cZaYptDy009CcA5Wdo8Zp62aJJ6rQqnblczLw23OlQHOf0bfd2z2v/1a94XWknLEgzepi/CHp722rretbtk9Vty1aLSJkMDNwtxPku8kL2gySP3IempCYgkZNKFwBxUhOzIPU91IubSBlSiZg13XYw0R4HkfOzUoGIsojtkmvn0fuJYvj/29kzEFGa0HSI133SewqTySjS9z8vX6oPMS6gPxyF3bIjcqQ2rfAohIVUTBHcLco+6UUulmKecc7YFop7FtPnNGycVOpGLC7AONN2wQeCKzlH3x483gPYtja//Dw2oDP8dHsvOFjRBCNdjHDthKfTdSsJZv0SAgiM4x/TGZD38LCrkA2N2La+TLDiCGKqW16vCaaQPRxdhCAJLjMn8o1XkjP9p0Jb0Tn0ZujnSYV4Vy/qyaPruTQbkCjfYkR6bSvD6cKzHDFEWy5J29fXiYog0n5Mgo7PlHpsAXyQhEklTKoexCI0PNG9ZqPVat1C8ISbWdbGmOhqL68gSqlppIINKoAqoFxso4ch9efh8FUCwcvrYEOAa7eNxF6oRUmh X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: bcbe23e5-7238-42f1-45d4-08da5a225003 X-MS-Exchange-CrossTenant-AuthSource: BN8PR10MB3220.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2022 22:54:24.6782 (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: iwa8HiflhXN1KEHupPOMSacFWcbUa4rbemKDZTEbY4PGl5AIQ8hrx0CFiFnpLRcQY/wDYZ04zeHNl7K2hew2fQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR10MB1834 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517,18.0.883 definitions=2022-06-29_22:2022-06-28,2022-06-29 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 suspectscore=0 mlxscore=0 phishscore=0 malwarescore=0 adultscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206290078 X-Proofpoint-ORIG-GUID: HCWQgYS3MvfQ3Qyt-YqwE_W-PqeTDxR3 X-Proofpoint-GUID: HCWQgYS3MvfQ3Qyt-YqwE_W-PqeTDxR3 ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1656543294; a=rsa-sha256; cv=pass; b=llRMR8HFqMMnm4CSh8pjkBFju/4UtDfC8ZJC9B/9pC1hc6ceFMLiHZPTZSCCOGWTgpAzJH to6/jjcHhtZVFBs7cUIyk7GCNIG+URdS/ASISwZIhrr8gLMibsnyk31EKM0hL34CihmskD 8T1AYzdtKwDGcxaP5ojzgOVafOgvbnQ= ARC-Authentication-Results: i=2; imf27.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b="D3/4oE1E"; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=wjQIutiE; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf27.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=khalid.aziz@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656543294; 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=bu6Kg8V6EURiP43d9/pn7l+bO/MiGGXeBd3HJz6VVj8=; b=Be4AhbJ3kIy5UQ/LDJsxeXnKz5S29KLg1rdqK/LWaj+JrkPN6ra7Ir1HKZyVFVUAmK0Owr webTsPTrRQfX/IyVrCABeJcUnr8E7pcVpRx7k2jzxtcaCSRDOWP+fY1xfZv3GQBGJRwoFO WN+KthWsfCkF7wN29Qhfc3GW6znyrqs= X-Stat-Signature: 8mb5nhrixth4sb3fod87u8kbn5g3qmb8 X-Rspam-User: X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: F361B40041 Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b="D3/4oE1E"; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=wjQIutiE; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf27.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=khalid.aziz@oracle.com X-HE-Tag: 1656543293-429847 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: When a new file is created under msharefs, allocate a new mm_struct that will hold the VMAs for mshare region. Also allocate structure to defines the mshare region and add a read operation to the file that returns this information about the mshare region. Currently this information is returned as a struct: struct mshare_info { unsigned long start; unsigned long size; }; This gives the start address for mshare region and its size. Signed-off-by: Khalid Aziz --- include/uapi/linux/mman.h | 5 +++ mm/mshare.c | 64 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/include/uapi/linux/mman.h b/include/uapi/linux/mman.h index f55bc680b5b0..56fe446e24b1 100644 --- a/include/uapi/linux/mman.h +++ b/include/uapi/linux/mman.h @@ -41,4 +41,9 @@ #define MAP_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB #define MAP_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB +struct mshare_info { + unsigned long start; + unsigned long size; +}; + #endif /* _UAPI_LINUX_MMAN_H */ diff --git a/mm/mshare.c b/mm/mshare.c index 2d5924d39221..d238b68b0576 100644 --- a/mm/mshare.c +++ b/mm/mshare.c @@ -22,8 +22,14 @@ #include #include #include +#include static struct super_block *msharefs_sb; +struct mshare_data { + struct mm_struct *mm; + refcount_t refcnt; + struct mshare_info *minfo; +}; static const struct inode_operations msharefs_dir_inode_ops; static const struct inode_operations msharefs_file_inode_ops; @@ -34,8 +40,29 @@ msharefs_open(struct inode *inode, struct file *file) return simple_open(inode, file); } +static ssize_t +msharefs_read(struct kiocb *iocb, struct iov_iter *iov) +{ + struct mshare_data *info = iocb->ki_filp->private_data; + size_t ret; + struct mshare_info m_info; + + if (info->minfo != NULL) { + m_info.start = info->minfo->start; + m_info.size = info->minfo->size; + } else { + m_info.start = 0; + m_info.size = 0; + } + ret = copy_to_iter(&m_info, sizeof(m_info), iov); + if (!ret) + return -EFAULT; + return ret; +} + static const struct file_operations msharefs_file_operations = { .open = msharefs_open, + .read_iter = msharefs_read, .llseek = no_llseek, }; @@ -73,12 +100,43 @@ static struct dentry return ERR_PTR(-ENOMEM); } +static int +msharefs_fill_mm(struct inode *inode) +{ + struct mm_struct *mm; + struct mshare_data *info = NULL; + int retval = 0; + + mm = mm_alloc(); + if (!mm) { + retval = -ENOMEM; + goto err_free; + } + + info = kzalloc(sizeof(*info), GFP_KERNEL); + if (!info) { + retval = -ENOMEM; + goto err_free; + } + info->mm = mm; + info->minfo = NULL; + refcount_set(&info->refcnt, 1); + inode->i_private = info; + + return 0; + +err_free: + if (mm) + mmput(mm); + kfree(info); + return retval; +} + static struct inode *msharefs_get_inode(struct super_block *sb, const struct inode *dir, umode_t mode) { struct inode *inode = new_inode(sb); - if (inode) { inode->i_ino = get_next_ino(); inode_init_owner(&init_user_ns, inode, dir, mode); @@ -89,6 +147,10 @@ static struct inode case S_IFREG: inode->i_op = &msharefs_file_inode_ops; inode->i_fop = &msharefs_file_operations; + if (msharefs_fill_mm(inode) != 0) { + discard_new_inode(inode); + inode = ERR_PTR(-ENOMEM); + } break; case S_IFDIR: inode->i_op = &msharefs_dir_inode_ops; From patchwork Wed Jun 29 22:53:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khalid Aziz X-Patchwork-Id: 12900742 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 44D6CC43334 for ; Wed, 29 Jun 2022 22:55:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1E7D76B0078; Wed, 29 Jun 2022 18:55:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 174C96B007B; Wed, 29 Jun 2022 18:55:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E93FC6B007D; Wed, 29 Jun 2022 18:55:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id BF5E16B0078 for ; Wed, 29 Jun 2022 18:55:01 -0400 (EDT) Received: from smtpin31.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 894EC20862 for ; Wed, 29 Jun 2022 22:55:01 +0000 (UTC) X-FDA: 79632780402.31.E42E7BF Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf17.hostedemail.com (Postfix) with ESMTP id EBDB740039 for ; Wed, 29 Jun 2022 22:55:00 +0000 (UTC) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 25TM4TJN028210; Wed, 29 Jun 2022 22:54:30 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-2021-07-09; bh=tzNjiQC2Kh52nvj/IA2iScjKaJFJxuA0Ek6TWDJoEic=; b=MnXcqcHeRPmrklSmn4b6Tw1yLeQE3DfesgjobBPP32PylIFZcFhXt27XP55wVh9Dq4bz E5c3Uv7qMN+YLD4335sWjT6JfyzLx/hOM27DKMYQBXickrUG0zKxeEMWkX7ohHkPHYyN BMVFb6HoaJkc1WxxP9Psa0uCVTgqIPSMPjusA/ZquWxlyycUmSlIuHN5dD1vfGSmyCZu dEytKyodMGlIPa7osoOaJphoeLE4fNCVPThEb8hatKFthB11wqoA0nvLlQc6BD+79pJg K198oMHZtUQkqc/XAuq0FyFDEI+Al3hGDtY1Dw4Mh6MdJZyFAHc9YZiViGdcCxIlXA2v 9w== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3gwtwuan8t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:30 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 25TMf7FN003521; Wed, 29 Jun 2022 22:54:28 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2171.outbound.protection.outlook.com [104.47.55.171]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3gwrt98nsr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mi+Plaey2aej9NovQwIvPYcm7g4RcGBntXQM660NqGy2snbD6aGWt8MmPX/AhDwLNNgyM3VeOFd/MherHdUrTLw9y0NxN0UMzxvRce0CjM31XFNqt43DHLuzijHbQqSCAKlbmOSS6eoHJ3nD70gNEEf/qA4xsoBXt7h7o5UsmIbc2RYxBOMspKNYR26N4tMnlq2YUa8mTqJ2DgIgwxkw0E6uzUQsa22xAWlamP7rbvka8YjRoJJ24yRKND0cBXkLELeazzIufvFTaJsAguZ3eaULQ4CGVwH+HSzqGs/SOhwoears2qwPuu+ulW/ryj1SxFB8bBw0jtbV/TPx79ldaw== 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=tzNjiQC2Kh52nvj/IA2iScjKaJFJxuA0Ek6TWDJoEic=; b=lmSyXeqBgu376wf2/spOaZjaQ3/l2NF4+n5wuKriSFpkENDVjKFSCDzavyOE2opss0vkh9JqOQld75tT7wpuVf2VAoL7s+0uq73pHHgMXga2SZDn/eodBE1b3BMJdF0En4YcpsRUliQR/0yl7flC0b3fIw0N8hK6dzwRcAOMpvni18nyQMQ3Goo2U41jJrv46tMjIPi+4R45n6dkq3R0o3w3ustGbXO/8Fvw/0zHDX/fsaqDexz0gvId/goeZEIeT88H6hML68yemKXNsjAOY+jSbd9BDDVAmKh5gx+jONFX22VsdsiYpdGBLLsur9W2KUFBsFQgJ+HVOOak4zjBUQ== 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=tzNjiQC2Kh52nvj/IA2iScjKaJFJxuA0Ek6TWDJoEic=; b=aSUFzGe2R4kf4101qX5OL2raEJNt/HsHd4BEDyNVcVD07kmneVXO0M23MzutpHOzw1dYX5Y0/2+CvEfdSVbfX16XzaZlTlu15V7KuCtCX4mtHWPEkRxtYkrsjYGsL0heBkXe3qIeF3GwJY5bmnhswTgDh5bpmtUcT2APHH2xvCI= Received: from BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) by DM5PR10MB1834.namprd10.prod.outlook.com (2603:10b6:3:10b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Wed, 29 Jun 2022 22:54:27 +0000 Received: from BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2]) by BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2%3]) with mapi id 15.20.5373.018; Wed, 29 Jun 2022 22:54:26 +0000 From: Khalid Aziz To: akpm@linux-foundation.org, willy@infradead.org Cc: Khalid Aziz , aneesh.kumar@linux.ibm.com, arnd@arndb.de, 21cnbao@gmail.com, corbet@lwn.net, dave.hansen@linux.intel.com, david@redhat.com, ebiederm@xmission.com, hagen@jauu.net, jack@suse.cz, keescook@chromium.org, kirill@shutemov.name, kucharsk@gmail.com, linkinjeon@kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, longpeng2@huawei.com, luto@kernel.org, markhemm@googlemail.com, pcc@google.com, rppt@kernel.org, sieberf@amazon.com, sjpark@amazon.de, surenb@google.com, tst@schoebel-theuer.de, yzaikin@google.com Subject: [PATCH v2 5/9] mm/mshare: Add vm flag for shared PTE Date: Wed, 29 Jun 2022 16:53:56 -0600 Message-Id: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-ClientProxiedBy: SN7P222CA0021.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::6) To BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a01ffffb-3980-401c-1e81-08da5a225145 X-MS-TrafficTypeDiagnostic: DM5PR10MB1834:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Sc3Dkh6y2hKGYCpWl7SmwH6f1L+MMe3G+cUAQeaF4+fprG4oWrApLz0UNkH65d26TWj5u51hX2nnEKAMRKpvPKrRlIYoQXgXqb5MMJvUUdnMNTEeHMJ5wIl4f+IphizrDswswJ83DWYvzgP3MQ+JXGl7VUHDdWIGE9mZw81pZG9Kq7vlhf7PWqSWmef1Q+dsCFsi95dgZelHNR2/WPgmx5TKY1s1Z5+Z7ff+M2JMhPge7dUWd4SVEeA20ueELSFiHBYULPdcftcAwtIRqfhb7Ytq6KCbk4RTCQUKINEnbXDb1zBmf9Un+ukXRUprzW0KV2BPUP0kWlnFAyRxHCc/BvstgZGI5lzluRV6ekdFlLXGqV7NlaKfH9K8rYXCjAyUAV1hi7vc38y5P6UI4N+OSmIlx8OoEK0Sv7kWpRxWLFBzdYTpYUaX0s1Bf04F7dEYrzTS/mn+SDUnsOJiPa7eE4W5xCJfoD84jmIrFgGQRkHZ6xEur0Edg+roIHZ3subUAp9SthRhEmp4RVMYLc3EM/6YUDM5QRV17xb3rbljEnHkfs557RAHvlbSoge+uPZkkBJa07tjuhGtiCEhPnOAnFzBmZEBfBVABV7qubMX8HN+d8oIaHBGxwAnB/9/SxpxS8eH3vP3u2dTUUfYoHr8WPznWRR5qcmR+13Q0QddaMQg+LhtoMNV0IqqkcA50Ks9EYvkavSR5vkWBTeNA4CcsmKn8h0jpEj8FtibpY4de+0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR10MB3220.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(376002)(346002)(136003)(39860400002)(366004)(396003)(6666004)(52116002)(41300700001)(186003)(6506007)(8676002)(66556008)(2616005)(6512007)(66476007)(38100700002)(83380400001)(44832011)(7416002)(8936002)(316002)(36756003)(2906002)(86362001)(66946007)(6486002)(5660300002)(478600001)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: g2NajX0XLhaneVk90fQiYu9p4fP2AXDVcw85PZEBTuJZPl85zhEpxh+jlLASetx8aPDPYGUFxQj2w/xGWlMyFgjcSXUDen5prlPeljxyBuO9X/LLNC0pRe3F6ValBuk+W2RAyL6E+5lB4inOGxN+4Ww1ts7Aaeu2BPEfeTNbOp3wVNf+/vD6UTcBchnd/bOloLfoPG5WTJX+fuHWoEmn2KZrsxKYONAybYyb9Ko7pfAblFD2AeRmdkdDLggahVJyJ9Rkq5gF2plX7N0x7xVNxTecu5meIeiYzoIdL8GQcJ7v3KbWgNmrNhgrRseLDAXY9pRTSB6Z2s7UgaKaha5ICsYAs66zvEN3JVLSiqJOqW+QN847tMLbeGLkG0VHjaoKtHCEKanNkbL/RUQQ3AibU7s1NNwkGBoP/Ru2jDmA3GMU7Zal+VdBCc66MJB/5KvEntDBTOvde8ejD+hj9F2U7swKFyfEukOtrxdG0UloeIofobKFvkAEoVMjzujbA1Bf6l0fp+l/N5HAvF/j7VfDzq6CWf3bg2hsFIe+OU6BfwWVpoLQK3tdRbzJERpsHcXg+cK1t+CsMLyhzOZHfzA4yeVDf6w8g/szTAFEiMKX/e85b8BrRdEHSXhlheDr1kWbzFUoX9mXXKuWN6lYkK46VMIMs4kMY1WI40rEhKawM1/abhBm/m8fESftSlgqJS9XOKmGG94DRTT8KZUtYDhW0xpZkOKtHmubeAP4gB8NA+lncgJ2S6mE6P9Td1oOqui3LiyLSGJk3+MYTK8p6RfRtOXGnzImNTBfto+UfA9qNMu4yMlKqAa+wL1smoRYAQ3kphzH/JzeqXAlCSt4OJ/iDYNou/qdGxbSf/qydhjz49ecYDEH07PYvbh6draYIETvviXLRE/kx95HgPbetIR6RGWZrmbVtE92yVww66mV8d80e360rDkLc8sZG2hMVVS4LgbnfyCpYgfyIcsE4W5kyHZeqHr8P7aw1KiBVyJW7qyJUnHkIC0S87RwuPALC8OtQp6ewoJQ6YG8dNpgqVk4LMq+auWGptnV/ulCCXlxynlIj3FTyPcgPkFXL0UWI1bWVrRjn7H/zCZSguNETU1fE2Jv6rsZ0a2tflDmmyvXTL0MuJzkYhLr+LyieoxAM/H+SeUL23478ch9bTJhV2sBrcYNmHjdWqCvLTSjKGMoYXVWaf3CEQdaJWSeGRJgGpJV9srBUU6axjCxn/BRekmBxaT1pUKfC/tMEZYMeRRxnt4NiKyrCsyt7j7t+PJZ/aP5z7RDe9pAy+hCSOm5Pc1Ez2oqPSAL5ktqM+TZWWf40i+O50uS1499HI0OB8hSlxdIrZnxmugYoJE70XZoKOrWZEbIPWq5z5odHVAGx1de6/ApduRVbR6A/FihWoJ/p3abfPNgBoTUmIY2i018h4krMjjkERWFaS8F/DQzPCfmC7QzX4fniMBE48feqIgkdLfvjndmRBRkHEf7ClGnreQ+grl3iOE/vxlREoaKasnWkJivOGchNBGzt3eiwW1TjWxpihBSmFeYRpCTtCzvOPuL5v726VaigliwxgJ5Jt6UobZgUB/CBXDh6CAxoVgMoCYVi+l0xGRCHr5F0cidSszv5qHhmKOMOaUrWAhXHUeXsUP139PGkLnf7xtFtvXEWVBp X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a01ffffb-3980-401c-1e81-08da5a225145 X-MS-Exchange-CrossTenant-AuthSource: BN8PR10MB3220.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2022 22:54:26.7718 (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: MlfB2JDheNzkkPXSqMARO5T/f0KhYBxWmhF25O6W1MtiIugY+bsp1uGgYHKtjodWFf7uPb/xU6g9gHhmq7prow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR10MB1834 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517,18.0.883 definitions=2022-06-29_22:2022-06-28,2022-06-29 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=818 suspectscore=0 mlxscore=0 phishscore=0 malwarescore=0 adultscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206290078 X-Proofpoint-ORIG-GUID: Tvn0GXuCGQxZ835g2ncrOWdWyViEjZQ_ X-Proofpoint-GUID: Tvn0GXuCGQxZ835g2ncrOWdWyViEjZQ_ ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656543301; 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=tzNjiQC2Kh52nvj/IA2iScjKaJFJxuA0Ek6TWDJoEic=; b=H6cnJH0GlyjBAQxsxW+5jVrQiRIpZCMm3t/hD7/E0R4DaKHUO99IB3jO+r+b2K8p+Gz9EY fbvoW9fJwbVwMDd/hk6cgEXjreD5GI9Wl8hNeQyD5hzCkr4k3TChUCuzp/TApwCqD63yQk 0s/cKHm9t6D1czmjXc5hj93JjQb7QtA= ARC-Authentication-Results: i=2; imf17.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=MnXcqcHe; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=aSUFzGe2; dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf17.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.165.32) smtp.mailfrom=khalid.aziz@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1656543301; a=rsa-sha256; cv=pass; b=i3lWHX5Tf9FXU7Y9MITQLyljpinS1GM/KU+TiZzQ/EpEkei6ySnocKT5qP2Arz4YS6/t3h 2QvONHIUYjufaaE1HM4hQkt+DNcgzdB3+mOuV9eou1JXM0EjgzAy3pFZitqlY1TA5qypo5 YH5JuUs0tCgvaS9ZH/auYC+NrCNaVf0= X-Rspamd-Queue-Id: EBDB740039 Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=MnXcqcHe; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=aSUFzGe2; dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf17.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.165.32) smtp.mailfrom=khalid.aziz@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: 5dpn4pyzceezmpyaerx9oucazdudke94 X-HE-Tag: 1656543300-988034 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: Add a bit to vm_flags to indicate a vma shares PTEs with others. Add a function to determine if a vma shares PTE by checking this flag. This is to be used to find the shared page table entries on page fault for vmas sharing PTE. Signed-off-by: Khalid Aziz Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/mm.h | 8 ++++++++ include/trace/events/mmflags.h | 3 ++- mm/internal.h | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index bc8f326be0ce..0ddc3057f73b 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -310,11 +310,13 @@ extern unsigned int kobjsize(const void *objp); #define VM_HIGH_ARCH_BIT_2 34 /* bit only usable on 64-bit architectures */ #define VM_HIGH_ARCH_BIT_3 35 /* bit only usable on 64-bit architectures */ #define VM_HIGH_ARCH_BIT_4 36 /* bit only usable on 64-bit architectures */ +#define VM_HIGH_ARCH_BIT_5 37 /* bit only usable on 64-bit architectures */ #define VM_HIGH_ARCH_0 BIT(VM_HIGH_ARCH_BIT_0) #define VM_HIGH_ARCH_1 BIT(VM_HIGH_ARCH_BIT_1) #define VM_HIGH_ARCH_2 BIT(VM_HIGH_ARCH_BIT_2) #define VM_HIGH_ARCH_3 BIT(VM_HIGH_ARCH_BIT_3) #define VM_HIGH_ARCH_4 BIT(VM_HIGH_ARCH_BIT_4) +#define VM_HIGH_ARCH_5 BIT(VM_HIGH_ARCH_BIT_5) #endif /* CONFIG_ARCH_USES_HIGH_VMA_FLAGS */ #ifdef CONFIG_ARCH_HAS_PKEYS @@ -356,6 +358,12 @@ extern unsigned int kobjsize(const void *objp); # define VM_MTE_ALLOWED VM_NONE #endif +#ifdef CONFIG_ARCH_USES_HIGH_VMA_FLAGS +#define VM_SHARED_PT VM_HIGH_ARCH_5 +#else +#define VM_SHARED_PT 0 +#endif + #ifndef VM_GROWSUP # define VM_GROWSUP VM_NONE #endif diff --git a/include/trace/events/mmflags.h b/include/trace/events/mmflags.h index e87cb2b80ed3..30e56cbac99b 100644 --- a/include/trace/events/mmflags.h +++ b/include/trace/events/mmflags.h @@ -194,7 +194,8 @@ IF_HAVE_VM_SOFTDIRTY(VM_SOFTDIRTY, "softdirty" ) \ {VM_MIXEDMAP, "mixedmap" }, \ {VM_HUGEPAGE, "hugepage" }, \ {VM_NOHUGEPAGE, "nohugepage" }, \ - {VM_MERGEABLE, "mergeable" } \ + {VM_MERGEABLE, "mergeable" }, \ + {VM_SHARED_PT, "sharedpt" } \ #define show_vma_flags(flags) \ (flags) ? __print_flags(flags, "|", \ diff --git a/mm/internal.h b/mm/internal.h index c0f8fbe0445b..3f2790aea918 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -861,4 +861,9 @@ struct folio *try_grab_folio(struct page *page, int refs, unsigned int flags); DECLARE_PER_CPU(struct per_cpu_nodestat, boot_nodestats); +static inline bool vma_is_shared(const struct vm_area_struct *vma) +{ + return vma->vm_flags & VM_SHARED_PT; +} + #endif /* __MM_INTERNAL_H */ From patchwork Wed Jun 29 22:53:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khalid Aziz X-Patchwork-Id: 12900738 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 49A9BC433EF for ; Wed, 29 Jun 2022 22:54:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CECA76B0073; Wed, 29 Jun 2022 18:54:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C6E556B0075; Wed, 29 Jun 2022 18:54:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8EAE68E0001; Wed, 29 Jun 2022 18:54:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 76A736B0072 for ; Wed, 29 Jun 2022 18:54:54 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay12.hostedemail.com (Postfix) with ESMTP id 3E0A312083B for ; Wed, 29 Jun 2022 22:54:54 +0000 (UTC) X-FDA: 79632780108.08.1A9A9FC Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf15.hostedemail.com (Postfix) with ESMTP id C7F4DA002F for ; Wed, 29 Jun 2022 22:54:53 +0000 (UTC) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 25TM4FJC014302; Wed, 29 Jun 2022 22:54:32 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-2021-07-09; bh=+ZwP+XVit+nEQkoxtxba0giR3shxsD8YmnIgagKvZfw=; b=uG5gpTkmc6X8x+/N8e5Pl3aXzVhWeUbKYZA6N/7xPDtlRWig+04r9MPl/sWVqoxuCWrr kx9gm9b9bQe4DYcFlGJorhK9Ny7LTVSU723JU7En2eizOaEVPx4PGCBMP9Dej9ogFBwd EQV5UFGc5YnuV5cbRAg10BiThfvfKd3ZZ9x1xOeSBICXm69L/V9sK2xPf644ZSHtB0lU EOTFBkHAPmgCeVo7RLR5JEbce/kUJz7JBhlGy6NlMYEbvc22IQEGFdE0gst3I4XghhEZ RfKtOow4knikTCzD81Au1OT5A4FK+bAovG3TJ3Fb/ftOsiLWyoxfbD7MjQgerU92/iwC Iw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3gwsysjgug-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:32 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 25TMexmb033590; Wed, 29 Jun 2022 22:54:31 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2176.outbound.protection.outlook.com [104.47.55.176]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3gwrt3wyy7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R8w9Z9NjJf2adh4OgJSh+hrp/YAoNy9AijPKlAbamrRTSZ2xZGLgWI7uGvD44nhoFKIlTyeSuB+BgJaPKzTCXwX2pvJRrarmcjEHzOVv6gFQLIJaJTpza0ZMoZQTfKu8FB8XBgC+52ZAiZ2Z+lqLCbt6S//jZsKy64nDNkhSQ5SVGG2ABXQYNVOiDv4TDODpPgbJRJAPjybf948vCygl8pneW/IvWfDIDLK8EiOkBXpXYay5bvXJKhFb1cdAp1xF+TPjl+nnzEEkuyM/zysrFWZnyMMyIOSmYjeSPiTF7ahDxtYRMc+OseMok1b7HBsFb1NhqeQynGwT3mRMWhhAhw== 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=+ZwP+XVit+nEQkoxtxba0giR3shxsD8YmnIgagKvZfw=; b=aGkYixFq1NIYKGgIFyvFexsNXIxY+V27/WM/SjGIIYwj2rM7TmPcShYcOMJKfiOfpJF9MbVoDjDAcdn4S53MdSeTP6MY/r+KEA035k+7cyyf640CPEJW1+nl1jZphxnuglF61T56ZtL4yYyYGsHf6TINrLmfj/MbIMI8/vWywjyoGll4IHQQMQWDpje3dxrRcw8M0CemtIEALJM69FSwN0FC6hcoUH+HXdZQkUOfqhtZEnuQtHZ8uCzIBYAlp4zrvd2XUwPZ1c05j/5lcTgrhIrSY9jzOEFV1frpw8HWDd1FZUz6cTeIYcJfXpLTvLlAb7L2vUXSrSWqu8H4nvGEbg== 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=+ZwP+XVit+nEQkoxtxba0giR3shxsD8YmnIgagKvZfw=; b=tdtk/QBw0yxzyQ9uDS7MTY3VPXvYxeuBqSIYAuTzVpijio6aTMnBjLXpdaoBDT4cdA8LyjqFkBTXxqFwyRX7gFPH8SFwy/4piKavMLzorXQaYR5eqL34MbUEKwC13jkdq9wBvkOrzeOrf2TQds6tT1EbW0gmID1nshiTEewqB8g= Received: from BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) by DM5PR10MB1834.namprd10.prod.outlook.com (2603:10b6:3:10b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Wed, 29 Jun 2022 22:54:29 +0000 Received: from BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2]) by BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2%3]) with mapi id 15.20.5373.018; Wed, 29 Jun 2022 22:54:29 +0000 From: Khalid Aziz To: akpm@linux-foundation.org, willy@infradead.org Cc: Khalid Aziz , aneesh.kumar@linux.ibm.com, arnd@arndb.de, 21cnbao@gmail.com, corbet@lwn.net, dave.hansen@linux.intel.com, david@redhat.com, ebiederm@xmission.com, hagen@jauu.net, jack@suse.cz, keescook@chromium.org, kirill@shutemov.name, kucharsk@gmail.com, linkinjeon@kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, longpeng2@huawei.com, luto@kernel.org, markhemm@googlemail.com, pcc@google.com, rppt@kernel.org, sieberf@amazon.com, sjpark@amazon.de, surenb@google.com, tst@schoebel-theuer.de, yzaikin@google.com Subject: [PATCH v2 6/9] mm/mshare: Add mmap operation Date: Wed, 29 Jun 2022 16:53:57 -0600 Message-Id: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-ClientProxiedBy: SN7P222CA0021.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::6) To BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 48d5b35b-6ca6-488d-bbae-08da5a22528b X-MS-TrafficTypeDiagnostic: DM5PR10MB1834:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z274RsqRpcKiz6IaYl73EgzXuqT4KbLA+4GeiLyLqu4rxlY3J+NXGakwoCFzz/RbkM4WcffmQGgOhrJeeYg3MgqPiw2/QXupy30BLv1SbHP1EMR1wCNzK/btNs0ZCRCNT3ho2ZN86/op8zfowAA76DedBoucR4vFXjCO6IUOmBRGIdhRcAf/vgGOGz+o9fJLn8QbTjILHWj9w+X2K2WtLo2UKE9jbgS9x/uY18+ZLEPAWwPQLWhJxV/350nathGDiozmaXkKj6x7jW58WRyI0eSAhQc7gyWo1Ne0upigPZT/8897t8J84COSrgXe9P6ZxLvvGPbK1daUPvpxtheu1IgiSDhkCPt6dHRSDE11KRYfruEyr97edLyvnc8kLEDPNUoiVPXBAAEZaIaZ1uAk9Pr1lI6U3e+iGxtepEfrc+uHwXn+EMRdj0sRcsyLf/5FsiJKBD4bsTyMyNvkYcsmLOcSKWeHh9FYj/RbZ/aYspUnegD4jM3syN4iuJPoWeeH3FGvfqhfzCw9dULuBJPazhF7FNuMBCC1MSPSZFujhzoAeuoe4If8t4cOZiC34P1xqAd2DzRS8SCTuZK1sESTggAYpzeej0hqedm0MvttuTOQMiPxm0lKSLFYSSK7J4y5gatYMVPAkRS76kuSc00uRQUsWdRVxOERXe492xk2bj3YvQlFjDFJuL5ZB7ZNLvRzEB7hjsLfd/tU2jP7faBmOL2qIh7IGMXbZjAcH+NVVLw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR10MB3220.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(376002)(346002)(136003)(39860400002)(366004)(396003)(6666004)(52116002)(41300700001)(186003)(6506007)(8676002)(66556008)(2616005)(6512007)(66476007)(38100700002)(83380400001)(44832011)(7416002)(8936002)(316002)(36756003)(2906002)(86362001)(66946007)(6486002)(5660300002)(478600001)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: N98ikKuorsWIAnGCzMIK2yy2uusc9VY6hl5AWloOEFB4Hv/tGhF8vAfLt1tuPx+BKlhohGUY5q5h+dOfHSA9Sh6oKA1Di2/JGUgITu5RhWxXOs2chQxnKIu1GnwhhSa0RgMjwoknjGRxPLRR6Ri5lMcvPnp6+357ACMrLiAlxzsVMGdqM5tSmEXggTMGt5ZDcJVRwH87708iyH4b1IqQVAeGX+Pb8CVx7YSlqggaz238A+jPZo2viKY5KQaDxwf3FSJKUjao5mZfwH/DDgHnZOqTDU0tVMDf7zqgVnQ4RpdKcke+a1w4Rbi6Vvwdmbh6+1lkWrwP3hp16ylkjihS/lIulmJ/OgmzqdXj8BDV+iSHPepMW4hgQKUUFiAtXwEE+H6QQdal1UIyJ76YV5qklIdgGz8PokkuRmJgqIzVQDev6jFr62CCkMtp2h4+BKdnrJAnzoBozgkm0rX4HaWYcn5yKTOTUGc5JjPcRjR8vDQ3gveQKy2ycBAd7TbFidTgPnIap8VcbiQglmNQu/HOm20oNpn6pvkkgd55CYjR5C919GNVppcSrRB3ycXLGhDJ/3NXrX1FyxyNkaoKeKdK+7slCWozDeYVfe9Jnf89ldXY1yFXDDmJc3OrvWUshso6LxYAk+Z/mAFzn0qrpddtfDoZ0DdqPrFv7L7F31jEqVIJdYY6XS1nft6T4Eq7KHueb6IAORSZ5dsogLx+eBbOIkE2wqEF1wK6eojbTk8QriBipV/Tum76BCNMOgIFV+vyKMZ7dBdY3hnKc4NhKCxxOoTyHhL5Y3I43Yz1IiudCDGX5UsQ2+aYsNbV6UgdjdP/PeQHovGQ8l6Qkr5knMi2DX9SEcIJoiiLilr3w8PJOfiVFoF5YJFrkNDDo60hcDiBSBRYCJyYTk6NrrrxtGt1enfKEepXDY3UFsRyCf+GyaCA1eNPCbN9GKzpQOLTO7E59evIuswN9xwdwYGzl5hRESiCk8EFJC+6LbfQZXrCx51dpRquIj22LIbV5qL7olEOey1Ipmftr9vB7VwjvAGjtbhc1uDZbkmVjEuWHDrRg0BE+X4fKgz0vxJvAHhO39fjqydJuPth7rsEOywzQgL0WINhHoJf70S64xYZ0RijYsPEC3dW0Qp17y/iSMu87YsMCE+oErFF6vTvpnLc1BHYTz3J/XWnCaYtkEWPmQOvLe3iU7OIQ/N9BFqklv8xR6/8+/dhfsA3mtZQboeWky87k+zlDVCG5B05FyqO7rsB224p3zrnjtI9R2y0hpunkcgg3/T3E7Oud9vrp6EYMJRiyOF8df+US/CwyR5ERgsSO2ag3gg+r7yMU/g16Q8QcMMZd/SSY23WBVF3NeLJoMxMix7XmMgHLfxMGoBXukRkJUd9nRk0Cvrp0lB+CuHsHkt3bxGhRvb0OcGtf34QnBT2VUGAxYxEnog2JsMSne8JrJ5K5mSW2dW6HEGKCqXJbHJdqTGsn8wcqD3WIbks0cS2t+yp056hp9UQd+toBD9JRflfkGxkb66/sf/02zesitqbEW1DLEjQ+HXy0sXsfDMCRmDvFQ8QmWIlxICkcPIO7EZaS9jyJYdoLvdal2Dp0tkW0vNEnVk2dQy+WbYM/hW62sxUwhNs3663CB6rXHnWOZ4OeRqVZO9/sUOG1OHGQEd0qHHCvaWmIlxgULENNVtd/Q== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 48d5b35b-6ca6-488d-bbae-08da5a22528b X-MS-Exchange-CrossTenant-AuthSource: BN8PR10MB3220.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2022 22:54:28.8967 (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: is7W/4RpK+LME/ERJg9ogCFlhDiFLFEeF/YtDo9lshqE14503fkvaIE98/gMp/rqHCjFVBL6QSMEPJ03nQAT2w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR10MB1834 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517,18.0.883 definitions=2022-06-29_22:2022-06-28,2022-06-29 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 bulkscore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206290078 X-Proofpoint-ORIG-GUID: Q6OADERyjJVXaWx6uFCk5ZwTLwJtbpqu X-Proofpoint-GUID: Q6OADERyjJVXaWx6uFCk5ZwTLwJtbpqu ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1656543293; a=rsa-sha256; cv=pass; b=5oCMmR5G1UHfGMNBZ/F9LYusOMZhOrwZFSGH8G9gNCSMWn0lXqPR2Air+EsOfxyqay/Liv g1Y7RaUzNcR5g9gduYIrNmh/4GzfARiSzNpvODCyABNMaxbLXpzSqetqvjA3EfzpMRbrEE nqI+rQ0F8+f+vAI2RqyjBQGQhnguqbA= ARC-Authentication-Results: i=2; imf15.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=uG5gpTkm; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="tdtk/QBw"; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf15.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=khalid.aziz@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656543293; 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=+ZwP+XVit+nEQkoxtxba0giR3shxsD8YmnIgagKvZfw=; b=HkKe2WwCWFyhEzqt1gfhJboEFgbBRf9l9xEwvhZ/hzsHrPhPXM27L7HOSBNSRb+fZu7OIi dycmtl/3B6APYiK7RiBs3pT69RaSRNjWCBELHsCWD8sOxGL2AWFrgLLCg1yoByP6QGTD5C fIKl3g6xB/Q9Y1e8Pc4eNQspsLVMy7A= X-Stat-Signature: oskmzy3ihhdmii931xmh7gdyx5zmen8y X-Rspamd-Queue-Id: C7F4DA002F Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=uG5gpTkm; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="tdtk/QBw"; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf15.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=khalid.aziz@oracle.com X-Rspamd-Server: rspam10 X-Rspam-User: X-HE-Tag: 1656543293-971010 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: mmap is used to establish address range for mshare region and map the region into process's address space. Add basic mmap operation that supports setting address range. Also fix code to not allocate new mm_struct for files in msharefs that exist for information and not for defining a new mshare region. Signed-off-by: Khalid Aziz Signed-off-by: Matthew Wilcox (Oracle) --- mm/mshare.c | 48 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/mm/mshare.c b/mm/mshare.c index d238b68b0576..088a6cab1e93 100644 --- a/mm/mshare.c +++ b/mm/mshare.c @@ -9,7 +9,8 @@ * * * Copyright (C) 2022 Oracle Corp. All rights reserved. - * Author: Khalid Aziz + * Authors: Khalid Aziz + * Matthew Wilcox * */ @@ -60,9 +61,36 @@ msharefs_read(struct kiocb *iocb, struct iov_iter *iov) return ret; } +static int +msharefs_mmap(struct file *file, struct vm_area_struct *vma) +{ + struct mshare_data *info = file->private_data; + struct mm_struct *mm = info->mm; + + /* + * If this mshare region has been set up once already, bail out + */ + if (mm->mmap_base != 0) + return -EINVAL; + + if ((vma->vm_start | vma->vm_end) & (PGDIR_SIZE - 1)) + return -EINVAL; + + mm->mmap_base = vma->vm_start; + mm->task_size = vma->vm_end - vma->vm_start; + if (!mm->task_size) + mm->task_size--; + info->minfo->start = mm->mmap_base; + info->minfo->size = mm->task_size; + vma->vm_flags |= VM_SHARED_PT; + vma->vm_private_data = info; + return 0; +} + static const struct file_operations msharefs_file_operations = { .open = msharefs_open, .read_iter = msharefs_read, + .mmap = msharefs_mmap, .llseek = no_llseek, }; @@ -119,7 +147,12 @@ msharefs_fill_mm(struct inode *inode) goto err_free; } info->mm = mm; - info->minfo = NULL; + info->minfo = kzalloc(sizeof(struct mshare_info), GFP_KERNEL); + if (info->minfo == NULL) { + retval = -ENOMEM; + goto err_free; + } + refcount_set(&info->refcnt, 1); inode->i_private = info; @@ -128,13 +161,14 @@ msharefs_fill_mm(struct inode *inode) err_free: if (mm) mmput(mm); + kfree(info->minfo); kfree(info); return retval; } static struct inode *msharefs_get_inode(struct super_block *sb, const struct inode *dir, - umode_t mode) + umode_t mode, bool newmm) { struct inode *inode = new_inode(sb); if (inode) { @@ -147,7 +181,7 @@ static struct inode case S_IFREG: inode->i_op = &msharefs_file_inode_ops; inode->i_fop = &msharefs_file_operations; - if (msharefs_fill_mm(inode) != 0) { + if (newmm && msharefs_fill_mm(inode) != 0) { discard_new_inode(inode); inode = ERR_PTR(-ENOMEM); } @@ -177,7 +211,7 @@ msharefs_mknod(struct user_namespace *mnt_userns, struct inode *dir, struct inode *inode; int err = 0; - inode = msharefs_get_inode(dir->i_sb, dir, mode); + inode = msharefs_get_inode(dir->i_sb, dir, mode, true); if (IS_ERR(inode)) return PTR_ERR(inode); @@ -267,7 +301,7 @@ prepopulate_files(struct super_block *s, struct inode *dir, if (!dentry) return -ENOMEM; - inode = msharefs_get_inode(s, dir, S_IFREG | files->mode); + inode = msharefs_get_inode(s, dir, S_IFREG | files->mode, false); if (!inode) { dput(dentry); return -ENOMEM; @@ -301,7 +335,7 @@ msharefs_fill_super(struct super_block *sb, struct fs_context *fc) sb->s_d_op = &msharefs_d_ops; sb->s_time_gran = 1; - inode = msharefs_get_inode(sb, NULL, S_IFDIR | 0777); + inode = msharefs_get_inode(sb, NULL, S_IFDIR | 0777, false); if (!inode) { err = -ENOMEM; goto out; From patchwork Wed Jun 29 22:53:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khalid Aziz X-Patchwork-Id: 12900741 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 AF5F1C433EF for ; Wed, 29 Jun 2022 22:55:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3E3D76B0075; Wed, 29 Jun 2022 18:55:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 36CF78E0001; Wed, 29 Jun 2022 18:55:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1238E6B007B; Wed, 29 Jun 2022 18:55:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id EBB476B0075 for ; Wed, 29 Jun 2022 18:55:00 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id C083720630 for ; Wed, 29 Jun 2022 22:55:00 +0000 (UTC) X-FDA: 79632780360.09.2ED610B Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf10.hostedemail.com (Postfix) with ESMTP id 3B779C0037 for ; Wed, 29 Jun 2022 22:54:59 +0000 (UTC) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 25TM4Svw028200; Wed, 29 Jun 2022 22:54:34 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-2021-07-09; bh=a4STy/GfsGc/ZrNgepOwrwUODitWUZgj0GBodIVjd3A=; b=e2tINxXp8b6YGqn2X2uDpaMR51vAE/HnR8SskHgXE1DKuAsL5xs6sx/Vp5DQPgvmtfBp m5D856/82kivXPBeYhfWP6JtP3RhHN4KN7bFerOdATfryWyN1/4c2+acbQH9+FDnWrmw gvj6YoyAOURSgWVL8crdtK2zp9VLLrUmjmEdaDtLEgZ8ajSK9vE2o9E2kJmkvBXbq52O KEAdhrDABvyFK9tHQzsrB5lKbsIC7I0KsVAfQ+2ljExqJkn7ttSI0yIq7IM7ZXuGJueE vd9dEYDTZlH/qrNLcHWUvzOVt6kH4VLMH816ow7qRbHhRiO9ED7rXoMTIwe9DNs0SAh8 PA== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3gwtwuan8x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:34 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 25TMexST033563; Wed, 29 Jun 2022 22:54:33 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2173.outbound.protection.outlook.com [104.47.55.173]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3gwrt3wyyq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MV7LA15ylf975m5zBm4SGbpC7jE85yfkdjdmjqs2BcNxINKGSEMz/0l3NgQczvsf3a9R3+TS4upucPYXz5WtAAmameCs7l31dX/b05mOlj/bH6/IEjSUsIGn13hnV7RAQNN3sIKC6s36lJzox2hsT4+i5k9KWVbZYZ50ckB+MV/41/GUIpPG6hRDraKYGBVmbKiXhIry4BRdK6i+B6e8pcfQBn3O2BkV5D2wNxFIm1mJ3hjJjR8woyLYB0TP4pzmqNWcezp0jSLbVssSAJ5aQQtslnlLQ+ep8cGH0K1MiXDLNaXejpHaaQmlTW4S4KbSY3f/ED8FRHI7Y+kd41lpsQ== 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=a4STy/GfsGc/ZrNgepOwrwUODitWUZgj0GBodIVjd3A=; b=lajiIvk8AOOymSSasRH3znvTQuyEWdHovxm5Gmdg4psKHsQsc3y/AWRrnaL5SypvD/eE8BuCHhfkPFvyxRRryaj10HP7rkRY1KWXeeZoAd6GqTGqjWzDUHTcqv3jkrD9schGWCSGWti45rmylp5H1pSRQduHg+g8rcLPayQ5H5+6UM9RT/xXh78MBZCt5XvsKlZIoJI7TefEw+S190bjgpixOl+9B4GLmeKy+xan5/EHkkq5lqb3ji+2a3yL337HUdaN052zqvZMAmpVufYoeRVAknu6dy7dVAOPKYnStlycPx1gdffx9kkj8gpWNKWzms4P3075BIl8MkpeKTmKxQ== 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=a4STy/GfsGc/ZrNgepOwrwUODitWUZgj0GBodIVjd3A=; b=n10SHuwVgrgN5d1bsLUIv2taqnZGuwEPZQOsQPVazuo+IPDyIWsl1QMF/gNGJLo2owld+kvc7iYK6RF+uqVg2qJCDHNHmjraMsvdUNMa/QrvLNekt2/Xi1OnSzrT79yEFC0hNTKr0Pv/OBtoELQ91orGOpzRCpF51ktkw8IyfGM= Received: from BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) by DM5PR10MB1834.namprd10.prod.outlook.com (2603:10b6:3:10b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Wed, 29 Jun 2022 22:54:31 +0000 Received: from BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2]) by BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2%3]) with mapi id 15.20.5373.018; Wed, 29 Jun 2022 22:54:31 +0000 From: Khalid Aziz To: akpm@linux-foundation.org, willy@infradead.org Cc: Khalid Aziz , aneesh.kumar@linux.ibm.com, arnd@arndb.de, 21cnbao@gmail.com, corbet@lwn.net, dave.hansen@linux.intel.com, david@redhat.com, ebiederm@xmission.com, hagen@jauu.net, jack@suse.cz, keescook@chromium.org, kirill@shutemov.name, kucharsk@gmail.com, linkinjeon@kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, longpeng2@huawei.com, luto@kernel.org, markhemm@googlemail.com, pcc@google.com, rppt@kernel.org, sieberf@amazon.com, sjpark@amazon.de, surenb@google.com, tst@schoebel-theuer.de, yzaikin@google.com Subject: [PATCH v2 7/9] mm/mshare: Add unlink and munmap support Date: Wed, 29 Jun 2022 16:53:58 -0600 Message-Id: <1b0a0e8c9558766f13a64ae93092eb8c9ea7965d.1656531090.git.khalid.aziz@oracle.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-ClientProxiedBy: SN7P222CA0021.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::6) To BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 80ccaab6-be60-4ccb-f6a4-08da5a2253cf X-MS-TrafficTypeDiagnostic: DM5PR10MB1834:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 16nJnksxX8Btz2xXqSYHBldFoDfFCwsuhkTt4Ap0elC6uJF4LADtw78AQWMQwgjW8ktbL0fxqLy4zfo7ghoRFeUjwWjAAFYdeQHjmvBpR+SWBDwO5laIrq70pmYBEx3Z6hfgGqivW3XnWaX71ctWuIHb+I8vKrF4tjUv0vGtqH0YSc4oxtzLaCtvnhDax3UYmWIf/f5MzmHsMLVld4hsr72pwK2SMBKWSMuIrp/zKnh5i/YcvO/d1h5gkyIfR8pTyzwIfW/hfDRtSAvbwuSEo/1LHsbSJWMRYQbjpTaJ95riS3woRQSeT5lCCWupXljnN3Ys4XBs31djmkVUuTTsJ2O/2T3VU56Cdz9KKC8RfkD01WcrHRqfE7snhbRUWtFyVD5VUMrgLc/iqQDuPVHZvAVzRg3kdu//dRE2pxNk1sEpWccSD8O/SyGoThvAXjKWbl7fkKFRA0Mq1LvY+v4JXsG+Qu+ixIZ+o0+MY9alTQc8kzc7Y/o83MrhZ5oFMqKljQN128WJ+IrxVbJwThj4TAQPTXI1O0TnvDEF1dHjNwOXYSqiakw3XzqXI4cGVsxPtkesVV4mJStKo7K+OKhoc6IerjovIRLsdjrVALu9G5WJcNknY3tsQ8IGRTt3gFOAKF80jt5eIauy/1bnq6z8Cnx/mgQo2bvA6LGXNoOLYZvCzM9zoD0oHv7GBHOrlKb+CdDD3x3i97RMliSnFpitDYnG1XPVDlEBatpyWkWgXkM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR10MB3220.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(376002)(346002)(136003)(39860400002)(366004)(396003)(6666004)(52116002)(41300700001)(186003)(6506007)(8676002)(66556008)(2616005)(6512007)(66476007)(38100700002)(83380400001)(44832011)(7416002)(8936002)(316002)(36756003)(2906002)(86362001)(66946007)(6486002)(5660300002)(478600001)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QEFs8qikYrylmBiwI4ctrXRKdAGqyBlDG4WUZm3QsFiY/mtaSNc/JKRWD3Z5nX6BejqyN3luWiHhlGqMv8hjA6AwOzzjf1BYDfUvk72r/grGEmaSmTdXbgLUCHRDoOMtXwG5Yls0zQWmabwHxMXExLps4sUXKnzZNewoz2TCDlXHDRO+92mc/HAl/BuKUkm/WqVW7SAce06Ua7QOEGGNPKY5hytJTIi65O00zwy2VG75hb5YrEYnhRAZflTr5D7MrZoxzQCLAKORU2HIQV+6axkD6PHu1WbfR10+eLrQpvvXvmbc7O4XLQMpbaCIHw+GiCFDuhxYFGPRoIyZG5oIHOsnmwXRe73+gX0xqoPfji+0piZnsAzxkZ4t7QhYAwebcfCCrMmtlXMNznZfHAleQqmHE0I/gWgZI+Q1pgpLhVBs59ilB8X2pPH1+lxKlyv8gZpZ5bW2a1JqGiZJhR7ETrrnWVLIyj1H43BjydLjSQAoYIsaULg+/UHWs2xynx3NCDKm4M2+Ko7HoQuZy3BXhAmV3wcbsOhFCFkOcyZE2yr2tDDZ6cmtnJvpBpZdmkOSMhq0ZVGl/KkBpJeBicGJ0Mb6MtN2HHcjQJpRZPhNQU5tOAHfMscCsMltoj3YGM1d+M9ydVaOLRF3BhOIHWme0iy2LlR+5SLfk7/vj91HcLV3Xtq0Iut6KvKIvL3xDh9B2p5KH+1EkQeURkBCpBmBqa3fxUb+S7G2P/8T94e2/Cjw5zUIkRPQwS7ZwIDUGDUZTwPQZHZ8NKUhaqGvqiSPZl21pHCKaMqi0/wRAPLF707nA1eASAHK1fQhqr7q7nuZfVIFFlQvfrP/sxoZPuPpBqSC3McDqBf+B1UwRJlrXQJ45UfjPiGcw0LsgRQguBDbvkZYNjFJ7bXTvgBoRAA+ySZbHr2bZiS225OkcXQY/7M8YY5lKj8oRoJHSDMNUH/fksyYAUrEyRBv6evxZGoSx3Cl0uNn2Q+0cKomjNmkbuFEar/lao99V4LNTZmTzFFSTuaTzB9aWGCoASXFnNvFqnKfzgt+YK6fjymIxij8pH7IimqnWPdNFEW1XJDX+ajOCJnOTOd3kXdSkBPq6R2rquJrc+vHii+DZIyruuU6xD5HbC/U2bRP969V4okSYNktPPLbbTqX6y23or9h8ed6rFky2rgETWquETI7HF6y/jLSNVzkTrNuHYLnXq5oFrrJ68JxRddxj/4OVFj5TGvlchb2UQmJgfTJKev9T4UJZlen1x0rvgm5JHI5PlZEpO+JrdQaBriPuZWBfUq9CjdrjSFfIsdaXy4zgdvNnh6DBc2kh+1Wp56fcyTYNYxExZrhCj/c//71mlqaTOwgymVyhoVAVJNWD6jltn0d0ocdj62R0G+ZVygLciX0a52onmf1LVW/ZulLG+9RtLOF4vF4ANuRV80X8bQDje12b+5JNloNENjeQ3tZz36guZ23LcxDGGDnX5YuMr+1K66Ma+6z5zsXhy0Z9Sc180ly2B+Zf8aqF54o1CDsthh+lQlOSHT6bGKBAUhhJ8ovbGMENQEXDw+vY8DtG47xDTfHsuOTy+9yE1oA168824zCMwJQYQVs60Hnhatsk02QXYQ0yASCmZhrDbbwBtTCiyAlaUI1vBRd+SrugUoo70/IQN0LIbtOszql/ljSLlr+WR/kmEXZaA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80ccaab6-be60-4ccb-f6a4-08da5a2253cf X-MS-Exchange-CrossTenant-AuthSource: BN8PR10MB3220.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2022 22:54:31.0372 (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: 7M2bYWm8z8vp+FXX19gRULJuzpsNvjKHI6COPgkaB/smSuWvfzF4tno3IfecwSru3evAfxSqjYy96dpHniWT0Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR10MB1834 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517,18.0.883 definitions=2022-06-29_22:2022-06-28,2022-06-29 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 bulkscore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206290078 X-Proofpoint-ORIG-GUID: UvVb3F1D3dDET9EL-jKWdHk-zyao54z2 X-Proofpoint-GUID: UvVb3F1D3dDET9EL-jKWdHk-zyao54z2 ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1656543300; a=rsa-sha256; cv=pass; b=JQ/AFC2mfhCQtTKudrIh1aoMUaPGddQNKki/YKQiYzAqCvf12a3fmNNO0cfEccv6glyvq9 GROXsh/yVFCMft3XFFVz/Y89xVQt2zXV4cuH3sILWW+rtDoIUDjQe4pORwQMN4uoZ23Ndz vOaFk++z+cwE7V8zBwA3qFagErNcZsI= ARC-Authentication-Results: i=2; imf10.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=e2tINxXp; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=n10SHuwV; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=none (imf10.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.165.32) smtp.mailfrom=khalid.aziz@oracle.com; dmarc=pass (policy=none) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656543300; 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=a4STy/GfsGc/ZrNgepOwrwUODitWUZgj0GBodIVjd3A=; b=a0xoBzUff1l74idBdZA6Bk5uOh4/40uwFR4adl3Rwdun515BXP0GHluWrrlvFEZY9OcM07 Y+W4X+tOzj31p4lFIL6ZfCsCvEQyJMdWTh1wZ1iXDamfDJp2z9BVPpIiu2TbRK/gjFyYIO btPhQjgjUocq/Sw/kfbYbiNTxNg5UyE= X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 3B779C0037 X-Rspam-User: X-Stat-Signature: wexk459yy88uyfa3ghdugc9hbsdtwzca Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=e2tINxXp; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=n10SHuwV; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=none (imf10.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.165.32) smtp.mailfrom=khalid.aziz@oracle.com; dmarc=pass (policy=none) header.from=oracle.com X-HE-Tag: 1656543299-229834 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: Number of mappings of an mshare region should be tracked so it can be removed when there are no more references to it and associated file has been deleted. This add code to support the unlink operation for associated file, remove the mshare region on file deletion if refcount goes to zero, add munmap operation to maintain refcount to mshare region and remove it on last munmap if file has been deleted. Signed-off-by: Khalid Aziz --- mm/mshare.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/mm/mshare.c b/mm/mshare.c index 088a6cab1e93..90ce0564a138 100644 --- a/mm/mshare.c +++ b/mm/mshare.c @@ -29,6 +29,7 @@ static struct super_block *msharefs_sb; struct mshare_data { struct mm_struct *mm; refcount_t refcnt; + int deleted; struct mshare_info *minfo; }; @@ -48,6 +49,7 @@ msharefs_read(struct kiocb *iocb, struct iov_iter *iov) size_t ret; struct mshare_info m_info; + mmap_read_lock(info->mm); if (info->minfo != NULL) { m_info.start = info->minfo->start; m_info.size = info->minfo->size; @@ -55,18 +57,42 @@ msharefs_read(struct kiocb *iocb, struct iov_iter *iov) m_info.start = 0; m_info.size = 0; } + mmap_read_unlock(info->mm); ret = copy_to_iter(&m_info, sizeof(m_info), iov); if (!ret) return -EFAULT; return ret; } +static void +msharefs_close(struct vm_area_struct *vma) +{ + struct mshare_data *info = vma->vm_private_data; + + if (refcount_dec_and_test(&info->refcnt)) { + mmap_read_lock(info->mm); + if (info->deleted) { + mmap_read_unlock(info->mm); + mmput(info->mm); + kfree(info->minfo); + kfree(info); + } else { + mmap_read_unlock(info->mm); + } + } +} + +static const struct vm_operations_struct msharefs_vm_ops = { + .close = msharefs_close, +}; + static int msharefs_mmap(struct file *file, struct vm_area_struct *vma) { struct mshare_data *info = file->private_data; struct mm_struct *mm = info->mm; + mmap_write_lock(mm); /* * If this mshare region has been set up once already, bail out */ @@ -80,10 +106,14 @@ msharefs_mmap(struct file *file, struct vm_area_struct *vma) mm->task_size = vma->vm_end - vma->vm_start; if (!mm->task_size) mm->task_size--; + mmap_write_unlock(mm); info->minfo->start = mm->mmap_base; info->minfo->size = mm->task_size; + info->deleted = 0; + refcount_inc(&info->refcnt); vma->vm_flags |= VM_SHARED_PT; vma->vm_private_data = info; + vma->vm_ops = &msharefs_vm_ops; return 0; } @@ -240,6 +270,38 @@ msharefs_mkdir(struct user_namespace *mnt_userns, struct inode *dir, return ret; } +static int +msharefs_unlink(struct inode *dir, struct dentry *dentry) +{ + struct inode *inode = d_inode(dentry); + struct mshare_data *info = inode->i_private; + + /* + * Unmap the mshare region if it is still mapped in + */ + vm_munmap(info->minfo->start, info->minfo->size); + + /* + * Mark msharefs file for deletion so it can not be opened + * and used for mshare mappings any more + */ + simple_unlink(dir, dentry); + mmap_write_lock(info->mm); + info->deleted = 1; + mmap_write_unlock(info->mm); + + /* + * Is this the last reference? If so, delete mshare region and + * remove the file + */ + if (!refcount_dec_and_test(&info->refcnt)) { + mmput(info->mm); + kfree(info->minfo); + kfree(info); + } + return 0; +} + static const struct inode_operations msharefs_file_inode_ops = { .setattr = simple_setattr, .getattr = simple_getattr, @@ -248,7 +310,7 @@ static const struct inode_operations msharefs_dir_inode_ops = { .create = msharefs_create, .lookup = simple_lookup, .link = simple_link, - .unlink = simple_unlink, + .unlink = msharefs_unlink, .mkdir = msharefs_mkdir, .rmdir = simple_rmdir, .mknod = msharefs_mknod, From patchwork Wed Jun 29 22:53:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khalid Aziz X-Patchwork-Id: 12900746 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 9A941C433EF for ; Wed, 29 Jun 2022 22:55:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8F02B6B0080; Wed, 29 Jun 2022 18:55:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8504A8E0001; Wed, 29 Jun 2022 18:55:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 36D276B0080; Wed, 29 Jun 2022 18:55:05 -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 18A7D8E0001 for ; Wed, 29 Jun 2022 18:55:05 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay13.hostedemail.com (Postfix) with ESMTP id E358060790 for ; Wed, 29 Jun 2022 22:55:04 +0000 (UTC) X-FDA: 79632780528.01.4357AE9 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf30.hostedemail.com (Postfix) with ESMTP id 52EEE80038 for ; Wed, 29 Jun 2022 22:55:04 +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 25TM4bsA000913; Wed, 29 Jun 2022 22:54:37 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-2021-07-09; bh=i4VgjLtjq9jjVTPpB14Hukd5jRRaep/rnkhxQlDqB0E=; b=jkdbdPHIG2tjtJup0SY4Cfw6sr6k0QUwqfDSRi0JOyO6wjqXZMQdBRyVZuMtZvufpAg3 ZUQ9lmzSgIzK3FtZrGpp02RyOhuuIY3Eu4A70A79/D53xCpsmeHuYKdoCqxwmvZ6NzC7 bukYNJcr9Gj48UMcH2EI9NDqUBcRjznEoecYcrsN2C3UsLQEuCWCy9EAuPfVg1CpWqEG 5R2pm+LtmTA6sojAA+trPtqInd5qMTYUItPmoSXRx+1jCJzer43R548PTHsjr6hbPZQ4 FilbiWkgQTzjeOmr5yrI12KSwG3jG72qfgqOEzbgpro+pxALCrToxxnnC/jeV3CuZRYU fA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3gwry0jnkm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:36 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 25TMflb9004850; Wed, 29 Jun 2022 22:54:36 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2177.outbound.protection.outlook.com [104.47.55.177]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3gwrt37q8m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F+PsQ+vf7uVzBMmUED9DjViimY9YR/GSc2/f0YcbyNqNKXrM/6gUD/nO6241AuCN+v6I0kujwBK2qp01/8To7mKyZCW3647PBncj+eKRfm+LJy/T6pZE6pG9DiYwE3bEBGfE20Uc1ELwk3zA//rhSFsd1Fb2k5VGZpkIc7nA3DdCbQONm504jZDf+XV1KThd/DPykcZqglwnG9AiNxG+Wyw0NTZlOxTRzHRRNe27N31qkNDPm1Axw0ynJ6k/v9rg5Y1nL9dPlFzCrzTkRWBc1SbuStTfmX+iUD1zhuibP/NTwCytZEB599zkmII4zLK63ktpqfuSUCUeMGC4/zy7/A== 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=i4VgjLtjq9jjVTPpB14Hukd5jRRaep/rnkhxQlDqB0E=; b=XY40N8WkBsBoTtgH0jQPk+Z7RG+YjkQPpVMCZZO36euuJIldATV8nfhqhaBWavmIv23RbMuCE6jymRFc58jo0AYgE8scibWT4TawnU4B4dVztlWhu7/omzGykz2VHEOZiS5thrT++TRziaSLSf2s74JjIX+AGlRFcXEpb20GX7DXAQ9zNZEug3skLzxbcSIDdFRlK9KEq3jRp49XT0+39fgrfiFxKUpYw1QAwNOH7xOJhUnPQ5aEK4U/AeJWWMcawLhUH15dMaFlQ0YUmVgvYC5EeTuGh0G/iIhUsP+5wtn3Uplp+DlHOseQkXvc/WbdlJWQa4mlqYFiv+c7sRnIHA== 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=i4VgjLtjq9jjVTPpB14Hukd5jRRaep/rnkhxQlDqB0E=; b=YVZbgp20ZvlfSBKb039Kh0dksfNnPDHYGKuH95G/UL23fsY9gV/xfbYEehkMWeHkJ7AIhEbdUfSYUTZ1R28O/fhTQfjoE2Zm43yoxbtQ3H0XIS8IcczE3nqRE/S+3J6kMpbsrtDmYvxw/LeBdtG7oTf1ihGkKYlnHGu0bIus2SE= Received: from BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) by DM5PR10MB1834.namprd10.prod.outlook.com (2603:10b6:3:10b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Wed, 29 Jun 2022 22:54:33 +0000 Received: from BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2]) by BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2%3]) with mapi id 15.20.5373.018; Wed, 29 Jun 2022 22:54:33 +0000 From: Khalid Aziz To: akpm@linux-foundation.org, willy@infradead.org Cc: Khalid Aziz , aneesh.kumar@linux.ibm.com, arnd@arndb.de, 21cnbao@gmail.com, corbet@lwn.net, dave.hansen@linux.intel.com, david@redhat.com, ebiederm@xmission.com, hagen@jauu.net, jack@suse.cz, keescook@chromium.org, kirill@shutemov.name, kucharsk@gmail.com, linkinjeon@kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, longpeng2@huawei.com, luto@kernel.org, markhemm@googlemail.com, pcc@google.com, rppt@kernel.org, sieberf@amazon.com, sjpark@amazon.de, surenb@google.com, tst@schoebel-theuer.de, yzaikin@google.com Subject: [PATCH v2 8/9] mm/mshare: Add basic page table sharing support Date: Wed, 29 Jun 2022 16:53:59 -0600 Message-Id: <7b768f38ad8a8be3aa35ac1e6316e556b121e866.1656531090.git.khalid.aziz@oracle.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-ClientProxiedBy: SN7P222CA0021.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::6) To BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f0ab85f9-6383-4c8e-5878-08da5a22551b X-MS-TrafficTypeDiagnostic: DM5PR10MB1834:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VYsRLBHZv8qovgyO5Q+/7l9NsrXYn6P0W6akpKohUeLOlub8/pAjdSE0/F1x+tCfJBHcHZZDClfexzVfhRemZq70h4XVhBXu5j7eE4d7SajDbKDh8Qar6xe69DbA5H0/bT3pYReVrHOWhKHJIhyn/rISmNdzpctJAI6Og8xYHA7taQgj/N+6GPBqfIzXgd49we4rKwOzydzX4Tc82ZCZvxLKRa1uxbLPGhEKJoFrrYMk1uajuovKptb7HNGEBODV79ADcFyzn4FuttlFP5UUeUojsqDRrmcK/eOytseIIcoGNvC+9kRK3ml8TuhSO3tJAGALmaoE6QgkRWDqVR+QBKcvKbki4TYAwxYiUDLVHpUsuEreUtAZDbiCLbFPiNxo7ES1qyQItl2+Z6JEjGgB3CYyWf67jS29n7fca8AeeiAmaP0bMua1CZ8HYeun3y/YlDC1Prf4a3J0OZcgAXQ7UYNxMYBjrIslQrgkJVqispbSpV5slsVywq9Dn0PORfmgnnybDRaY04I1xnz4yQKtNmE1PzHnRZvbAwMMjT731jk+0/kgBESuQEcjWTYX33/MXt3jHI9giYEps48+6uHG7bQotdniebsaQdOC+fz4wxZZH8qff0K5byeDR7xX/Hxeq771CGMHlK02ykW6J4vKgEpuyj6dr86d+e8jt+450kyDQ406vjofl9adStegXaZ8QpNsyy6hnnRRFqfVzojZN6sYu5aP8O+DxHamaku2LaIZjRxds7azn++mhbA8CxFmUXCMSiJyMVykwKsxGZ8koLtSJwVlIhqdnR81OxbgGWI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR10MB3220.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(376002)(346002)(136003)(39860400002)(366004)(396003)(6666004)(52116002)(41300700001)(186003)(6506007)(8676002)(66556008)(2616005)(6512007)(66476007)(38100700002)(83380400001)(44832011)(7416002)(8936002)(316002)(30864003)(36756003)(2906002)(86362001)(66946007)(6486002)(5660300002)(478600001)(4326008)(21314003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Ug5KJhjdqaIqVtHaMKnCdbCMPqyqDvtZgE6IQshbGVJQJKvScdmOgK61xNbI5ut++V9fiGhvqs9CwaXnh8x02b0nvc2FtaXzVKSQy8Xp22vgttUJsxsalDQ7xm8XD62Mi9KV1etetCMx9KDwG7PhHoerGv6O26d+43/V0Eu6/ZFyAhQmg5t4tN6+K6GvKokhYJxUf9mRCeNdQtflLJA/yN5AJK/wJ0aGnpDTbe38vdXvKiDvuhpfcOlzNJzkEj49wtpC4hGHREXjZyQOowp5NplB/B6lU4SkVdS8If7iRVRNkWbiwrkIv2tF+G6rRwHwgjbcvyQM1jSlrYqBo9N4Cb7Pb+rPsZE1i7MdJli+dWmwifPufOx3/bTNd+smZqRBDsSXDkacyBIOtt2tRnGyFxytnNDjN+A1FBaxsAB5R8u4zLcGdBZii+XeDXptRkSWhE+nmbDBjpsD2ZUnzAdENeok/daKz/LFcQTpBUavmqJg/O91swk1PJwk9s/5McQmzbWmd2XjEZdn+qDzokNyyDNuF/lUtwyQJZwF6eDtXGgm6CcKjgtZVfc8prXw53eHA3UbYilO42mmXIG/tXAoLnn6fU1FgxZxLMXtxRhUX90wb2MKrt41YQF74gLCncJo/fj4hBSErfY49A8V8cDWUQr+EYLsU17eQhbH2fwayWhTSh9+SIaqc0/5O7DAiE0tBfgMWjIzNsAfMAhjAVgAn/O3esZqZ/8FkZtK/z/k4CwMMrpTIGAr0ReQbyrGXRXlJl4qew6NAAk4fpz0qqLyHFFXJnSvJehIaavdof5GDrq32KxYRMUOPGoz0yfzP9iguCN9Rhhwj3UaxUaVsoCLtlr9kzmLhje6mvhfbqZ20xo4dUGqhVu+O7vNv3JCQySN2bKCUkhXBOcxmSrMqFXhge5RE/jkf9iCYJIFva8qlrdRqNYSEMBALnB7sPx6afAL6+jKn1DlD2rLv6I5hJWcy+5p+EG/Zogsy9KEf0OUtwCLUcleoFN1f8ROvtoOMpBLBEqXSiXyZp20PO80017QFaOvYOmtUmDE4mRCGKveV3FsWJ+demC5Co8/Jsse5nR8ZCrynq11Lbh4d2KaiJ3+GT5/aQeP70Exkj0s6gsXt3GYSHTQN39ptHTbwXgWYmukzfMrSC2kP8b5L9FPRuvL2NrHVy27ReGCIxo3d9Y6wKr//sbab4ZsuImRYphGwn6BSqsyes75GzJEb4jn4KCK+IbSWqIa4dewm1lcgCpaq+51ElD7RFRCLGTZvQ1qy4Nu9Q1f5fNe8NfKDNyrC+qanKVN5/FpRt0lORtGZcQXvQejkMI0qFAlRDApT1vuoWAxI5XDIT3zTtHELGOzc9a1UEORI+2FFzSResDg8wTWKVRK72Vh2ycoM5QJNtOiGesHf6frnwl9gxVKlXFcxnmskWcUcDvPCrLAM+Q/bLbpfDCvKpXCXyGHfI1w+AQx8qJoAFb0etvpmTclmfBpse3DQaGQb9JTQ4QE6GweGynouphlKbyRTQNFDa2mHIErctG/8Cf8e/bfH3YRR8BQmBiqT6qdq2IbCMbesHpAP2WfxjynxLhlD8lkcIaU6Z3O5TVdE9RI8PAw7ENBE9QAiduWzFI0oYuh1VLH3DJPW5poSr3wWlamHVdtZ22gmaHK5KDs9O/THukNRxcwa+7PqCXBag== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f0ab85f9-6383-4c8e-5878-08da5a22551b X-MS-Exchange-CrossTenant-AuthSource: BN8PR10MB3220.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2022 22:54:33.1933 (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: PWEk1ENf/kmoVatfXz9xf0quCs1bl8xEiGRmvEpNcLemTosCRELptAEzxwxAIemjBMzPOwRN+Wsge1taFCpKlw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR10MB1834 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517,18.0.883 definitions=2022-06-29_22:2022-06-28,2022-06-29 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 spamscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 adultscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206290078 X-Proofpoint-GUID: R_b32MokIkcEaiBl6LgM0eyVQaxbj8W9 X-Proofpoint-ORIG-GUID: R_b32MokIkcEaiBl6LgM0eyVQaxbj8W9 ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1656543304; a=rsa-sha256; cv=pass; b=Smwo3Llsm3NgIbZ66ueb6BeYX77lf5bvgK/WpdrBR8y/wPmOPd4XKZU5N0PPZgheTo2zgH bKje03McI6rQb04rp7vnLaJO3/lfVouU1m3ouwaE9K0mrKBMWQBb7fM2O3oTK0QiEZ2LBJ klTMHl58GcPjGO3g44aBpxlZJHfk9wM= ARC-Authentication-Results: i=2; imf30.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=jkdbdPHI; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=YVZbgp20; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf30.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.165.32) smtp.mailfrom=khalid.aziz@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656543304; 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=i4VgjLtjq9jjVTPpB14Hukd5jRRaep/rnkhxQlDqB0E=; b=kS3PRoy6iId5w88CgX97r/oe9kxGR6c/xdOjwuOxrz31zJXnnuDW+3YmgOs3C6EWso6oDE dWOnAukvdLzcgVpoV9pIbSdYdhPlsxJRcE0raYse5obmXmsOOI9oxkZsDoQDpKDxipo0O0 YdhMUxOBnisFGJrITj9IlqFEQLFjQ1s= X-Stat-Signature: 9pt8m3s3cz6iww57o8stoc5c9hufhf79 X-Rspam-User: X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 52EEE80038 Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=jkdbdPHI; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=YVZbgp20; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf30.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.165.32) smtp.mailfrom=khalid.aziz@oracle.com X-HE-Tag: 1656543304-212767 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: Add support for creating a new set of shared page tables in a new mm_struct upon mmap of an mshare region. Add page fault handling in this now mshare'd region. Modify exit_mmap path to make sure page tables in the mshare'd regions are kept intact when a process using mshare'd region exits. Clean up mshare mm_struct when the mshare region is deleted. This support is for the process creating mshare region only. Subsequent patches will add support for other processes to be able to map the mshare region. Signed-off-by: Khalid Aziz Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/mm.h | 2 + mm/internal.h | 2 + mm/memory.c | 101 +++++++++++++++++++++++++++++- mm/mshare.c | 149 ++++++++++++++++++++++++++++++++++++--------- 4 files changed, 222 insertions(+), 32 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 0ddc3057f73b..63887f06b37b 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1859,6 +1859,8 @@ void free_pgd_range(struct mmu_gather *tlb, unsigned long addr, unsigned long end, unsigned long floor, unsigned long ceiling); int copy_page_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma); +int +mshare_copy_ptes(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma); int follow_pte(struct mm_struct *mm, unsigned long address, pte_t **ptepp, spinlock_t **ptlp); int follow_pfn(struct vm_area_struct *vma, unsigned long address, diff --git a/mm/internal.h b/mm/internal.h index 3f2790aea918..6ae7063ac10d 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -861,6 +861,8 @@ struct folio *try_grab_folio(struct page *page, int refs, unsigned int flags); DECLARE_PER_CPU(struct per_cpu_nodestat, boot_nodestats); +extern vm_fault_t find_shared_vma(struct vm_area_struct **vma, + unsigned long *addrp); static inline bool vma_is_shared(const struct vm_area_struct *vma) { return vma->vm_flags & VM_SHARED_PT; diff --git a/mm/memory.c b/mm/memory.c index 7a089145cad4..2a8d5b8928f5 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -416,15 +416,20 @@ void free_pgtables(struct mmu_gather *tlb, struct vm_area_struct *vma, unlink_anon_vmas(vma); unlink_file_vma(vma); + /* + * There is no page table to be freed for vmas that + * are mapped in mshare regions + */ if (is_vm_hugetlb_page(vma)) { hugetlb_free_pgd_range(tlb, addr, vma->vm_end, floor, next ? next->vm_start : ceiling); - } else { + } else if (!vma_is_shared(vma)) { /* * Optimization: gather nearby vmas into one call down */ while (next && next->vm_start <= vma->vm_end + PMD_SIZE - && !is_vm_hugetlb_page(next)) { + && !is_vm_hugetlb_page(next) + && !vma_is_shared(next)) { vma = next; next = vma->vm_next; unlink_anon_vmas(vma); @@ -1260,6 +1265,54 @@ vma_needs_copy(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma) return false; } +/* + * Copy PTEs for mshare'd pages. + * This code is based upon copy_page_range() + */ +int +mshare_copy_ptes(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma) +{ + pgd_t *src_pgd, *dst_pgd; + unsigned long next; + unsigned long addr = src_vma->vm_start; + unsigned long end = src_vma->vm_end; + struct mm_struct *dst_mm = dst_vma->vm_mm; + struct mm_struct *src_mm = src_vma->vm_mm; + struct mmu_notifier_range range; + int ret = 0; + + mmu_notifier_range_init(&range, MMU_NOTIFY_PROTECTION_PAGE, + 0, src_vma, src_mm, addr, end); + mmu_notifier_invalidate_range_start(&range); + /* + * Disabling preemption is not needed for the write side, as + * the read side doesn't spin, but goes to the mmap_lock. + * + * Use the raw variant of the seqcount_t write API to avoid + * lockdep complaining about preemptibility. + */ + mmap_assert_write_locked(src_mm); + raw_write_seqcount_begin(&src_mm->write_protect_seq); + + dst_pgd = pgd_offset(dst_mm, addr); + src_pgd = pgd_offset(src_mm, addr); + do { + next = pgd_addr_end(addr, end); + if (pgd_none_or_clear_bad(src_pgd)) + continue; + if (unlikely(copy_p4d_range(dst_vma, src_vma, dst_pgd, src_pgd, + addr, next))) { + ret = -ENOMEM; + break; + } + } while (dst_pgd++, src_pgd++, addr = next, addr != end); + + raw_write_seqcount_end(&src_mm->write_protect_seq); + mmu_notifier_invalidate_range_end(&range); + + return ret; +} + int copy_page_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma) { @@ -1628,6 +1681,13 @@ void unmap_page_range(struct mmu_gather *tlb, pgd_t *pgd; unsigned long next; + /* + * No need to unmap vmas that share page table through + * mshare region + */ + if (vma_is_shared(vma)) + return; + BUG_ON(addr >= end); tlb_start_vma(tlb, vma); pgd = pgd_offset(vma->vm_mm, addr); @@ -5113,6 +5173,8 @@ vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address, unsigned int flags, struct pt_regs *regs) { vm_fault_t ret; + bool shared = false; + struct mm_struct *orig_mm; __set_current_state(TASK_RUNNING); @@ -5122,6 +5184,16 @@ vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address, /* do counter updates before entering really critical section. */ check_sync_rss_stat(current); + orig_mm = vma->vm_mm; + if (unlikely(vma_is_shared(vma))) { + ret = find_shared_vma(&vma, &address); + if (ret) + return ret; + if (!vma) + return VM_FAULT_SIGSEGV; + shared = true; + } + if (!arch_vma_access_permitted(vma, flags & FAULT_FLAG_WRITE, flags & FAULT_FLAG_INSTRUCTION, flags & FAULT_FLAG_REMOTE)) @@ -5139,6 +5211,31 @@ vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address, else ret = __handle_mm_fault(vma, address, flags); + /* + * Release the read lock on shared VMA's parent mm unless + * __handle_mm_fault released the lock already. + * __handle_mm_fault sets VM_FAULT_RETRY in return value if + * it released mmap lock. If lock was released, that implies + * the lock would have been released on task's original mm if + * this were not a shared PTE vma. To keep lock state consistent, + * make sure to release the lock on task's original mm + */ + if (shared) { + int release_mmlock = 1; + + if (!(ret & VM_FAULT_RETRY)) { + mmap_read_unlock(vma->vm_mm); + release_mmlock = 0; + } else if ((flags & FAULT_FLAG_ALLOW_RETRY) && + (flags & FAULT_FLAG_RETRY_NOWAIT)) { + mmap_read_unlock(vma->vm_mm); + release_mmlock = 0; + } + + if (release_mmlock) + mmap_read_unlock(orig_mm); + } + if (flags & FAULT_FLAG_USER) { mem_cgroup_exit_user_fault(); /* diff --git a/mm/mshare.c b/mm/mshare.c index 90ce0564a138..2ec0e56ffd69 100644 --- a/mm/mshare.c +++ b/mm/mshare.c @@ -15,7 +15,7 @@ */ #include -#include +#include #include #include #include @@ -24,6 +24,7 @@ #include #include #include +#include static struct super_block *msharefs_sb; struct mshare_data { @@ -33,6 +34,43 @@ struct mshare_data { struct mshare_info *minfo; }; +/* Returns holding the host mm's lock for read. Caller must release. */ +vm_fault_t +find_shared_vma(struct vm_area_struct **vmap, unsigned long *addrp) +{ + struct vm_area_struct *vma, *guest = *vmap; + struct mshare_data *info = guest->vm_private_data; + struct mm_struct *host_mm = info->mm; + unsigned long host_addr; + pgd_t *pgd, *guest_pgd; + + mmap_read_lock(host_mm); + host_addr = *addrp - guest->vm_start + host_mm->mmap_base; + pgd = pgd_offset(host_mm, host_addr); + guest_pgd = pgd_offset(guest->vm_mm, *addrp); + if (!pgd_same(*guest_pgd, *pgd)) { + set_pgd(guest_pgd, *pgd); + mmap_read_unlock(host_mm); + return VM_FAULT_NOPAGE; + } + + *addrp = host_addr; + vma = find_vma(host_mm, host_addr); + + /* XXX: expand stack? */ + if (vma && vma->vm_start > host_addr) + vma = NULL; + + *vmap = vma; + + /* + * release host mm lock unless a matching vma is found + */ + if (!vma) + mmap_read_unlock(host_mm); + return 0; +} + static const struct inode_operations msharefs_dir_inode_ops; static const struct inode_operations msharefs_file_inode_ops; @@ -64,6 +102,14 @@ msharefs_read(struct kiocb *iocb, struct iov_iter *iov) return ret; } +static void +msharefs_delmm(struct mshare_data *info) +{ + mmput(info->mm); + kfree(info->minfo); + kfree(info); +} + static void msharefs_close(struct vm_area_struct *vma) { @@ -73,9 +119,7 @@ msharefs_close(struct vm_area_struct *vma) mmap_read_lock(info->mm); if (info->deleted) { mmap_read_unlock(info->mm); - mmput(info->mm); - kfree(info->minfo); - kfree(info); + msharefs_delmm(info); } else { mmap_read_unlock(info->mm); } @@ -90,31 +134,80 @@ static int msharefs_mmap(struct file *file, struct vm_area_struct *vma) { struct mshare_data *info = file->private_data; - struct mm_struct *mm = info->mm; + struct mm_struct *new_mm = info->mm; + int err = 0; - mmap_write_lock(mm); + mmap_write_lock(new_mm); /* - * If this mshare region has been set up once already, bail out + * If this mshare region has not been set up, set up the + * applicable address range for the region and prepare for + * page table sharing */ - if (mm->mmap_base != 0) + if (new_mm->mmap_base != 0) { return -EINVAL; + } else { + struct mm_struct *old_mm; + struct vm_area_struct *new_vma; + + if ((vma->vm_start | vma->vm_end) & (PGDIR_SIZE - 1)) + return -EINVAL; + + old_mm = current->mm; + mmap_assert_write_locked(old_mm); + new_mm->mmap_base = vma->vm_start; + new_mm->task_size = vma->vm_end - vma->vm_start; + if (!new_mm->task_size) + new_mm->task_size--; + info->minfo->start = new_mm->mmap_base; + info->minfo->size = new_mm->task_size; + info->deleted = 0; + refcount_inc(&info->refcnt); + + /* + * Mark current VMA as shared and copy over to mshare + * mm_struct + */ + vma->vm_private_data = info; + new_vma = vm_area_dup(vma); + if (!new_vma) { + vma->vm_private_data = NULL; + mmap_write_unlock(new_mm); + err = -ENOMEM; + goto err_out; + } + vma->vm_flags |= (VM_SHARED_PT|VM_SHARED); + vma->vm_ops = &msharefs_vm_ops; + + /* + * Newly created mshare mapping is anonymous mapping + */ + new_vma->vm_mm = new_mm; + vma_set_anonymous(new_vma); + new_vma->vm_file = NULL; + new_vma->vm_flags &= ~VM_SHARED; + + /* + * Do not use THP for mshare region + */ + new_vma->vm_flags |= VM_NOHUGEPAGE; + err = insert_vm_struct(new_mm, new_vma); + if (err) { + mmap_write_unlock(new_mm); + err = -ENOMEM; + goto err_out; + } - if ((vma->vm_start | vma->vm_end) & (PGDIR_SIZE - 1)) - return -EINVAL; + /* + * Copy over current PTEs + */ + err = mshare_copy_ptes(new_vma, vma); + } - mm->mmap_base = vma->vm_start; - mm->task_size = vma->vm_end - vma->vm_start; - if (!mm->task_size) - mm->task_size--; - mmap_write_unlock(mm); - info->minfo->start = mm->mmap_base; - info->minfo->size = mm->task_size; - info->deleted = 0; - refcount_inc(&info->refcnt); - vma->vm_flags |= VM_SHARED_PT; - vma->vm_private_data = info; - vma->vm_ops = &msharefs_vm_ops; - return 0; + mmap_write_unlock(new_mm); + return err; + +err_out: + return err; } static const struct file_operations msharefs_file_operations = { @@ -291,14 +384,10 @@ msharefs_unlink(struct inode *dir, struct dentry *dentry) mmap_write_unlock(info->mm); /* - * Is this the last reference? If so, delete mshare region and - * remove the file + * Is this the last reference? If so, delete mshare region */ - if (!refcount_dec_and_test(&info->refcnt)) { - mmput(info->mm); - kfree(info->minfo); - kfree(info); - } + if (refcount_dec_and_test(&info->refcnt)) + msharefs_delmm(info); return 0; } From patchwork Wed Jun 29 22:54:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khalid Aziz X-Patchwork-Id: 12900745 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 A7AF8C433EF for ; Wed, 29 Jun 2022 22:55:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5223D6B007E; Wed, 29 Jun 2022 18:55:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4A52F6B0081; Wed, 29 Jun 2022 18:55:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 25E4B8E0002; Wed, 29 Jun 2022 18:55:05 -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 EDB236B007E for ; Wed, 29 Jun 2022 18:55:04 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id C7D413429A for ; Wed, 29 Jun 2022 22:55:04 +0000 (UTC) X-FDA: 79632780528.09.D72786C Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf13.hostedemail.com (Postfix) with ESMTP id E95982002E for ; Wed, 29 Jun 2022 22:55:03 +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 25TM4MbT001283; Wed, 29 Jun 2022 22:54:43 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-2021-07-09; bh=iDqTod27kjnFQwMReGoWxNIy9TEDVJAT+EvrAmpvCyE=; b=SZn4QQu7xMC8Pv8cMtXLy4izWCfCqihlMX3fWg1859i4hnTTXoVjayyydS55DJKCWuz1 0i9yA8FDCMKiGcoIHbL84b/DEeCiABA4U3Tr7WDcpWGyEGV3Y1YNo8jEI0/z6mYgt9mm DXTJtCjfezXp2FlvfLINhsgFxczxrpdHbXOC00ctgIdMUCEf7ybhzkHISkaTjhYQ0ZmK uMHH9R32tra5f1S+zMagTOS+xoAFaoQqUxJGI2AO9LYfivx8SHUz50V3m11VIP50d92m PFQidgB9LDfmRPIuYfv5tqUGGRpQBojbfF/oyzhH7a95U/9wRS6bu2I4NfgALlVB5jaq /Q== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3gwt8a2axb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:43 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 25TMeuBf028108; Wed, 29 Jun 2022 22:54:42 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam02lp2042.outbound.protection.outlook.com [104.47.56.42]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3gwrt3py5a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jun 2022 22:54:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nPvhnDWwIZHOosOovpazPVVTT2ZKZG7PBwGXyH0rGqHbUOy2pLf2lRj1eRuCE7sJxQY4ORM3n5FKxJbwWRXM3E51mtZpKMF/7NYowI1nud/qcbvLevSpo9iEN43sfrj556AHsQOsoXX4Tp1IxgevDUq3vbO9AKtt6Ss8B+Isqg63TMxL2YiJcSs15ZaGRqXASZyiXuskJ5ckhspfwpyrKKQ5mg+p3rFBWEZUpH0usSu4TGPld9z59Uwwgoh5z8+Wl0hZOXfkGLIdTEsLIfZTL62f7wRo/xz38z1c0PT7pVbnAvYS7/9aAXId291bhr+5zObNWbVZDDEdHPQ/Ts5TAg== 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=iDqTod27kjnFQwMReGoWxNIy9TEDVJAT+EvrAmpvCyE=; b=Xuqp/xKEdUUaD0BwK0ggiiyN8qfddyql+WY6w0DJZ9ODRjEAU9ERI+Nx4Pl9rJRydwYDGH24HfJTR8Tk4g+g9Y6+vUr0Gx82othOTNoMgpkZOYRiCMKn33J/j4cNqfKRi/fP6ygJ+BiNvaVXbivI/IUGyTHduwAZZS+V1KaRPB61Rg2NjIqkmuNpKh3eBsSvXJZSzBdWmdBQOGpFG+kV8SE5wJwVBK1saHFL+a5CFuZUfCg7H+fgsXspmveGR5FldAQWULZce2+OKfJV97LO3a+TDUkASoV4fMV3yYGbqSPhYzZBmVtKfT/IRkXSf5z42f6/d8mcswBAaFRU8uCn+Q== 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=iDqTod27kjnFQwMReGoWxNIy9TEDVJAT+EvrAmpvCyE=; b=CzocYIgCzjGzmejZkWzUd/MFncxEsWApjfRQH3npEqV4Md4NS04unMnxUc3R6ErGqjjOK+FLUZQq+nxjJpwxFGiUnX+6sR3Z1FfJOuj6eL0c8WCIl4P8B5VZEb9yaTn3K020JyXf0OV2tFpTTh3RFjqRhQERp28P2OXW8lb9ZqM= Received: from BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) by DM5PR10MB1834.namprd10.prod.outlook.com (2603:10b6:3:10b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Wed, 29 Jun 2022 22:54:35 +0000 Received: from BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2]) by BN8PR10MB3220.namprd10.prod.outlook.com ([fe80::28d2:e82b:afa1:bbc2%3]) with mapi id 15.20.5373.018; Wed, 29 Jun 2022 22:54:35 +0000 From: Khalid Aziz To: akpm@linux-foundation.org, willy@infradead.org Cc: Khalid Aziz , aneesh.kumar@linux.ibm.com, arnd@arndb.de, 21cnbao@gmail.com, corbet@lwn.net, dave.hansen@linux.intel.com, david@redhat.com, ebiederm@xmission.com, hagen@jauu.net, jack@suse.cz, keescook@chromium.org, kirill@shutemov.name, kucharsk@gmail.com, linkinjeon@kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, longpeng2@huawei.com, luto@kernel.org, markhemm@googlemail.com, pcc@google.com, rppt@kernel.org, sieberf@amazon.com, sjpark@amazon.de, surenb@google.com, tst@schoebel-theuer.de, yzaikin@google.com Subject: [PATCH v2 9/9] mm/mshare: Enable mshare region mapping across processes Date: Wed, 29 Jun 2022 16:54:00 -0600 Message-Id: <9dc1848f0fcbe3abe3d22584e339f2dfee60cb32.1656531090.git.khalid.aziz@oracle.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-ClientProxiedBy: SN7P222CA0021.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::6) To BN8PR10MB3220.namprd10.prod.outlook.com (2603:10b6:408:c8::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1aa6f337-fd81-4d58-ced2-08da5a22565a X-MS-TrafficTypeDiagnostic: DM5PR10MB1834:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FopgIBV/O9vXMppSwNSx6XJudeR/JDFTvv8LezUyRtcpVQgwbGlL+N+iNYeEyIK+OyMFT4xfQp5pHcRfMeVH3jTHGwZnO/AWxVxeX4mDP4Wz3ssBb4cuABVeD8KnlfpL5bre8AeZClqUSeyx8mSn1hGPw4A8KcTTkzXKtG9f5BtqhAPahzVNBOduOIs+3ewVsIbhOpLa8RxmPKLQwxd3sxwh+r6iQFCxm197aNyZm9GYL5YDNF7OyMzXMkPeRP+h3Ao2+efVYmRS78Z9lm3ZFngGGYP+wkuP0jwCQaXH3rRN/IyB257rNs5VdnTKIYkvwKYneL4JIqmzwRL72M3qbu3WhuMRRuf9S2g6xGF2CvFmpE/dF/Ej4vfG5GES2SCujyAMeiFc0THNrXlhTNxV2H+8y6Xg/0RyTGnpAzkxhaojvpUbYqNq6NNYMa3SUp+7nEziD8zpRcm3utH9CjzJkEhovUTFaGoSlWoiP2IPYZePXMnkKwp2ztWlBdK5lvb1bLe3BsgKpjU1oc0xaLYY12dDcGiNMpCBldjOUKHixsiPkLJOlYOL9LQ7u0WBP8UGOwesqOCgK6bL/myFF9afdWUNObPQSso49BICzbOZnlrLMT93OpwZeMvkmCNm82SIs1JTA44KYawSjsRqEE3h86m7fk8p7+nFBoAjs2ofcx6mlGacohMq0BPcUMBBzO6jewJbkntv+kVgUHzEvEXifKWnnTtGKwWqFl1ay+ip9Z0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR10MB3220.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(376002)(346002)(136003)(39860400002)(366004)(396003)(6666004)(52116002)(41300700001)(186003)(6506007)(8676002)(66556008)(2616005)(6512007)(66476007)(38100700002)(83380400001)(44832011)(7416002)(8936002)(316002)(36756003)(2906002)(86362001)(66946007)(6486002)(5660300002)(478600001)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: U+GYyPb7zBAeyJNm0XQbCVA7ZOWT85thOyUC7FGJQ8AftYrG+BQgasTkCmV5V36u6e6OnmAqO3RSi8wQtm78B+Fymtrp5uhw6hZYkZC0/qIJZKdmITxSe/LGsGbUC2ffg9MBR2TYuPBmjm8gDDd7NhyM0rQnmMGMm9O2uky9kcrbWUiB/rfKJL1dCGe4OiMI5QAxaXskENrakYn8WVoZGIbPdszAco2g+pVon+cVT8YqtyFBL6fA2+AaLTbuwUN3R6VgHZfoTRFF9+UNCa2Y+Bc8bJj7k8wyug4z+mWb4PilOp7QZtQQesDiCip/PGRllKzPPUxHSRed+UYERlnqKvh3OzIgBkNLL3sm9lT+ojrXKHXmjAVGmPfSye9Dns6P3/wtp1ld4p6HHU90NeD7LoQfWbEi1M2C9i3JxdxXqH68q9v+353W+o6rwhnvXiUQwNbOhZvOFFrthGq+lZBmSYzEyRceaph66JyNkNhA7+dMQ7Xg8B6PSApppqFYtG2c0NKzITJawXSxFs2P1uDyxmyTRLMZSck7nYISzIJXWy1bq60p43Her58dkwnRigTakd39dwS53KjrYftxm3t8w5fSmThTMyVDia8Vtnx4M2paVyb9yBCMvAKtZ1pFeEX3BR3/pJugwJhoEQ0Wso2fSF1szyjOjhRnAbatg1OomF1yxy2eVgUBo4ApeM4n4MecVnwrOvuAd1Q3M5j3bjydt+S6vZi48SLOXJJUyKe9Uu5VCYHaICTMPA/aLpB6KblB/AlC81+wCeqhHGZYZW8ZmfwnVmX5d6qUwDhH7hRZjPccYCZuZfpeS+uI3c0Q8zBqNtTQs+KP7vXrZ2Vuaxh8VvmXp/aTe9H/MifFt474qvF2NmkFIvobz7FdUUuDG9eqjnQZ8dDnaGCiKytqCEJ9LHBU1jBN+00ibJFO4+Vx67LTAknSCq8B3MhrxrnlFJ17xg1CFD/1ZwlVGxuO0htJup7CdIwQvduEDa9v3Xael8fwXpVXQExY8Ws9iRBX7PIwgt0xAgWXtXT/tDWv8qBH0iUZVrt4i32QFNzwAWZ7OrmZC9YEl7FbbGpCWyg5UxsVqlHnnV/0aNQgt4vPPRObMUkplvkl1GKNYeH76NaaR5crAvTlyondIeZjvmD+sII4OzXgYL+02sNdoljC8tC3ewg2M1UCDPuntK+H7iDQWj7+xk+IVr47RrIeCbz2Cghv4PdBlwru3k4LyqgPrCrWrDeoapnFhvxEJWd0AQC2y9rYWo6UzgmMUAIQNbWu6slKvTdcCGDqds+RFNCLnqBrVpSquz+hY5FJp6iH9tOwhTKx12NbdVdxlkKQcbUhO+8xA7zyyzEA0V/zbW6kzqUWMaLSH/9J53wYti+vSKeafIKkd2mdnMNgJIgeSfPoU73Sjt830SwbX7X91SUomWEwpR9caIT2WPgDXAsqC0fR0Xd9MICFTVLmJv8mavECTN6ox6VEdPVyXpHYDt29hiUPhQCWksJPAYIkV7Vx4+7gKiqqTKXWWMYzhB+H2fQhBc43kPgTSJUnNObE9KR14nEWz14AhUMyA+qV/OugJICqSetz7/m1Fnn07NkMGkpJdtGKMSmaOsrmFHXRpfmbqwoUH/RQlo5Zx3owoboBit7MLNFNzjIM+kyPnvyNSCaoCL71Q6bwSUg53NDrS8A6FoEQMw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1aa6f337-fd81-4d58-ced2-08da5a22565a X-MS-Exchange-CrossTenant-AuthSource: BN8PR10MB3220.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2022 22:54:35.3338 (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: MAGbDXGuSQ2v0KsxXD7hFWYHs71twdZPiR8nVAt7xjTbU5nVkbtUV9n20mAwpNEX4XhEogJr91cFB22zC56nZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR10MB1834 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517,18.0.883 definitions=2022-06-29_22:2022-06-28,2022-06-29 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 spamscore=0 malwarescore=0 suspectscore=0 mlxlogscore=731 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206290078 X-Proofpoint-ORIG-GUID: Cwo8LPbtBA-pHs-aNfxIi8uquXbeWUuY X-Proofpoint-GUID: Cwo8LPbtBA-pHs-aNfxIi8uquXbeWUuY ARC-Authentication-Results: i=2; imf13.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=SZn4QQu7; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=CzocYIgC; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf13.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.165.32) smtp.mailfrom=khalid.aziz@oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1656543304; a=rsa-sha256; cv=pass; b=Ckv+1DtjRFe/9MxasuD/woRHe3tfs6hWElOajg3YOnTAJChx61cpDYPyYVAwxL5+MwWE7N 5yLAnm8KO2PmaDz9SpbtyO2va0LUaJTTUxFOcchUCYBIPzi1F/zD0EHyxgCyVI9d2+vuVG OA1wVJBXIY7CmlqyNGynBO0QMDxUqw8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656543304; 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=iDqTod27kjnFQwMReGoWxNIy9TEDVJAT+EvrAmpvCyE=; b=hTBYp9lBWnA6yT/nuCzmbsudyKYpLKuXy0H9wMwjCJYuBH/eNMmwTyFBciaVmlVi+9ZLRq 34bmiEW2gJbPSprqg9m/BOazmo72vUopEJ6y01o7xrs3DJn+sMnwPB0lZhHVtI3Eypil1D 2MMdvx9rPnGw5aYT35Mozx4eKmvMVl8= X-Stat-Signature: 7tn3at3sik6ew3wzq356ou81w6pht159 X-Rspamd-Server: rspam08 X-Rspam-User: X-Rspamd-Queue-Id: E95982002E Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=SZn4QQu7; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=CzocYIgC; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf13.hostedemail.com: domain of khalid.aziz@oracle.com has no SPF policy when checking 205.220.165.32) smtp.mailfrom=khalid.aziz@oracle.com X-HE-Tag: 1656543303-828576 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000006, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: This patch enables propcesses that did not create the mshare region to map the region using mmap(). Signed-off-by: Khalid Aziz --- mm/mshare.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/mm/mshare.c b/mm/mshare.c index 2ec0e56ffd69..455b10ca0cdf 100644 --- a/mm/mshare.c +++ b/mm/mshare.c @@ -144,7 +144,21 @@ msharefs_mmap(struct file *file, struct vm_area_struct *vma) * page table sharing */ if (new_mm->mmap_base != 0) { - return -EINVAL; + /* + * Any mappings of mshare region must use exact same + * virtual addresses + */ + if ((vma->vm_start != new_mm->mmap_base) || + (new_mm->task_size != (vma->vm_end - vma->vm_start))) + return -EINVAL; + + vma->vm_private_data = info; + /* + * mshare pages are shared pages that also share page table + */ + vma->vm_flags |= (VM_SHARED_PT|VM_SHARED); + vma->vm_ops = &msharefs_vm_ops; + refcount_inc(&info->refcnt); } else { struct mm_struct *old_mm; struct vm_area_struct *new_vma;