From patchwork Mon Mar 3 16:13:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wojtek Wasko X-Patchwork-Id: 13999154 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2059.outbound.protection.outlook.com [40.107.93.59]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8473421B8E7 for ; Mon, 3 Mar 2025 16:13:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.59 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741018440; cv=fail; b=aWWEImJFFdj3c/ghTK7wu1cYhlOGsqpW400t6/kZJD8do0x63Vj8E6MSXB2QCQTDX27PClNOdpUK06WRvLzthOt/LxoWPn4DKpAhG4lnwOYSd50NajdMBpSOL/LYz9vzRPk/5Np860O+6BvZMna3BNa5jDkSUhNxSDnKHQ+zWeQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741018440; c=relaxed/simple; bh=DTPl2dJ2wBWMueSkrijklUjeqntGI7bLNAIs5W6J/Rc=; h=From:To:Cc:Subject:Date:Message-ID:Content-Type:MIME-Version; b=FS/pr/at9uIiNjWLtmgCPp3D/ohD8rGVA6JB1JVwly3Oxy8g0LsGdyqmjSEATK2IcotTD3BwZfWhdrps2QwVCrWZALmGnX+sCAmTYeqv1P2EY738/LPlKRUfGY0l4ON2BqIcD+iDEOXMCUpi2XoWXHl170FO5oJaAhhbBL+u4Js= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=eBDYHjPb; arc=fail smtp.client-ip=40.107.93.59 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="eBDYHjPb" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bOwWtVm0f/s5G9VQli5GITBdISlzGt5CSSy4i5+CswwuWhDyG2Bap7Gu8kYoJ6gpaAP9L5qh6RailDArMAG2hI3tlIgC7NhGT6hq97H09yksMpLjcw6GoXTq6bBCOOP1G/gV64lUDIbf9A+zEgBHvd7gyaJVc9dOtMGFrMtciykS5ohaAiHreKO3PFFtMmBPNGurXCFV1WbDTXV0ODIscj0AStk3gwSQYBDK8vRLKyyRHKQTqcLEXGTKyb7WGejyeGOrmUP2c57qa9gv7v+1QVHlyPi4Oyr0IAUW279qEV1+/OK0I6Pew+zMHhZfGX0DiWx19ZG3crbHYGTFpeOs7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=UBy8zsDnVaK4Z82b0FZZs/DgrQeZWCNUfvEphtp/+gM=; b=y48C6hacAF0obVSyibaXN7xQukgUtsPGytApD1ynrBNGURCbQJ1wGPfjVFP0tAPIlJKsRD72FwvXVHwrXEdnXqTTqSe36fqk49omtU0kK1OWx7KnS9EFAfCxzbaIeezn84g/YtXh8YtU4OOynE2nywKoMJuPnIZKU4rKV4QM6bNtvcvN3bQGtzIIWd3A7GvT3NeoCGxNifc4BWCr6HESob4x6AnDdHzTZO22ek3NCuirIkcNBlhADh9xXkmLGQ10h6e54Es9oi5Zz1XGUKqHkSN76ke7GmqHk0GWJaHcAg59gebz9QWXK5fjPb1cJW21N5a2b6lCm+ueJODm4HBPOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UBy8zsDnVaK4Z82b0FZZs/DgrQeZWCNUfvEphtp/+gM=; b=eBDYHjPbkqFV8cHuBP5ZuH4flg7l51wBhOKK1XR3ltMR9XpQQn/kmyVwN035jnodOlWc1DQrTII2+qfaV3pYoUeK/4eWoKu1DiW40lzc6UNMFO0uHpvVsRjTS62I7dqD1ba6cF1xHk1u8h0Za5Ww/askxO5Qaj2g0mBj0j6WKMzM2nhHOFVQ2LDfQWEJvdKywUkU4/c+CP3Y5PDU/BWLS4OMuINMNlfU8pAnBuj2nxRiOjhKDVWrxMbi013B2EHdJIhoAyCp8aF3jHTYzfuDwbRVnroyo5C5KdoxW7ySuz0Se/2O5+ZjArTCLjij0OdlXR15r/ws9ufi2x2Wb5ZCsA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DM4PR12MB8558.namprd12.prod.outlook.com (2603:10b6:8:187::22) by MN2PR12MB4094.namprd12.prod.outlook.com (2603:10b6:208:15f::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.25; Mon, 3 Mar 2025 16:13:49 +0000 Received: from DM4PR12MB8558.namprd12.prod.outlook.com ([fe80::5ce:264f:c63c:2703]) by DM4PR12MB8558.namprd12.prod.outlook.com ([fe80::5ce:264f:c63c:2703%5]) with mapi id 15.20.8489.025; Mon, 3 Mar 2025 16:13:48 +0000 From: Wojtek Wasko To: netdev@vger.kernel.org Cc: richardcochran@gmail.com, vadim.fedorenko@linux.dev, kuba@kernel.org, horms@kernel.org, anna-maria@linutronix.de, frederic@kernel.org, pabeni@redhat.com, tglx@linutronix.de Subject: [PATCH net-next v4 0/3] Permission checks for dynamic POSIX clocks Date: Mon, 3 Mar 2025 18:13:42 +0200 Message-ID: <20250303161345.3053496-1-wwasko@nvidia.com> X-Mailer: git-send-email 2.47.0 X-ClientProxiedBy: LO2P265CA0257.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:8a::29) To DM4PR12MB8558.namprd12.prod.outlook.com (2603:10b6:8:187::22) Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR12MB8558:EE_|MN2PR12MB4094:EE_ X-MS-Office365-Filtering-Correlation-Id: c3301e05-3275-4c74-99b4-08dd5a6e619b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?mxYesmd4MgRRcKU0qvnOqycxnR3iYrk?= =?utf-8?q?R11uNtx1PusFE5ROvTyPL+kU2I8YWWGGtnxciS4wYdrC3dDXRDFsfa8EaOH8L4ZE7?= =?utf-8?q?7Y4J/fSFFC8QPupwjGkEdgVHFGvO2qzIvX5VIJ16iMeCsrE2B4I0eg7brA0ec6SBO?= =?utf-8?q?LwMHt6AhbHitp6VzA0aw85nGYYDj50KjCp+f4UXvMnW2ABz3Alv9iP0Bd7JJSKJ93?= =?utf-8?q?RFucQ0E+8/3wTaSWamysaeYzmQbyqxKoil/Yf/tal6qOG/4p/cyVV7f+FcLVUbLzD?= =?utf-8?q?PViy2mTtRifej4ByRxHMOdWEn8V+nGh8GKFN1E5TgxtEXdnxKY/HMXQnPchxCaegy?= =?utf-8?q?OPwAcY0Ii558twRPMGIZ+ujv3hBh9PjOsU521snNlS16dtChfdLL/Wt8uAcauYekG?= =?utf-8?q?5tALLhqreVEGrtR4x9XcaqZRc0ikDFnVpx3sY16ci5cKLoou02HYr5mGNpD1awMYU?= =?utf-8?q?9ed1Qll61eCXDlhoEQcZ+eUPx8ibyZEhNmU2tIlcLBTxyLr7tGvWs+Y09xtJU9EGO?= =?utf-8?q?lwqpgxC+X1CQdbF6D0JU3kiKBNUm1vUzMk5K+1CJmAGN41tA3DJOTNCbGez+GdPv0?= =?utf-8?q?mDPKMuX2BLGPhOLRuBG97QOY0GVMJSm0FrO6AmfzdOfTmBWFOX0v9sSS3/B8vDSqX?= =?utf-8?q?oLI0ucmuZLMEcIAkq5BFL1puqccDASl2lS16zWmX5ChE134ZDo54ejW7gdfPtnF/2?= =?utf-8?q?2B4UTtIUxXnOLVbM2OddMZ6wbQ5dUaaBrzFM6im09AsqCDVyq14wYU7SfhZkhCt8/?= =?utf-8?q?MyY1IvvRkkVks21cdhl7d0pyxUsEmLEzmRP0+Sb/ZDRaQUPzRV0I9qsecq6wxoOaR?= =?utf-8?q?8QhfQtH3CgYMHljsIrO8J6YNTmxsXqexDlnjEA6R9WjAkVqKQIPAQjI+PwhEzMuXJ?= =?utf-8?q?bUstebR6zJ1ovoKb3ikil+7sb5NMbt8JgkxMolQmNrBnxtoSiFSxNv/uGXGON3ZrT?= =?utf-8?q?dGoVTUWhVhGIM/ZUAAHOxnh89NUazDkh+UH2FkEaQrLfpUmW3lOhgtqEQ0XI3Bern?= =?utf-8?q?yqKJA61iqgDDszBC6JOOlj9d85UM2q8ackScrGpZkvXn+Qy9wciIN7FcpZ59rVEAC?= =?utf-8?q?wsH/PpEMBMmPckwRZPAu9M22CseH5KQGKiNDMDlvETNfkGJ3rL//tfgewEzCB3jia?= =?utf-8?q?/06tp3SML1YXNDn7dRkj2AIyeoig9C42dwXMUaSEWzcSI0xvL9FsfZW8apTtt3cci?= =?utf-8?q?rU4j2eP+0Y4IgONM5TWxHysjz1frHFAaAjxOHoFd5UbZjBURX01D1oL5u/H+XK0SI?= =?utf-8?q?ve37Zdp7yq1GIsy5PQygmsX/VJmEP3tiPnTtnRXr7nzCOVcXQCzHhJ4fEMuwBJJG8?= =?utf-8?q?BrmnggBEoSCU?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR12MB8558.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?cRZY5YuAmVkKX3yQviTXYlLXfBFE?= =?utf-8?q?Y9IvEpzyYiJflPBk0zUMQc7D2ofiufom6o7H1UtAAsAZ+vnT1zQHlFq9fc/dYsT79?= =?utf-8?q?pByyPS7sQfwZglrV5E13HLXlEgJqCBXX/G+pEnBR57q1Iy0qdFdFumBg7Zzl6HMJk?= =?utf-8?q?lqB6BqASpqdiXN7jJBwK4v2vxDRajrXr4wV8WoFWPo32WSaaUkTfvIBTbaa1u/+SJ?= =?utf-8?q?XzZfIYjCV5wJuY1mM6ubUIUlKyywbjOv+CIF8lZeMB+UOsm8agOd41DikVu3Wk0rC?= =?utf-8?q?dZyCLVWH/Z8poHEKQBQdVZPq//NroK/ehkvi9zT/wKMVPNTE6ZwDZ3nHKIR5LpLxY?= =?utf-8?q?wYZhMN7uuS2pYvWae5/d7C2zqpFrBAr7Jqfhz/K1isZCzXvcslWF7uL0Vjyv5QT0W?= =?utf-8?q?5ELkWoea1B2zDa8G/Kf6wxcTTrc7qwv773ZzLFpS48X8T8sfv9Qh8pjuy8MTM/ADm?= =?utf-8?q?wcVM/FlUvlNRyi4EN1MqucgXnCPdXFA0lS+QTB1rFaDhT5lPevbaw6TtuAeZb9O54?= =?utf-8?q?JFvBAutH+ftLqKAYFpMlfkr9WZ1jdJ5Qqvvs7FTt9Vng0rGI9bXE9Yv5jn1YEGP9d?= =?utf-8?q?bAq9k0WmivBAeUgFSD8up2I/XQSpsTGdN14MpLPmTkTudkaS+pDb5BdRnQd1LbpYs?= =?utf-8?q?wn6g3YacqRa0Y7ID3Z46EoCirPKV9/4Kdm/C+OwV2g8sy5/0Eutvi5QCwKiFD76Sj?= =?utf-8?q?96prwLDdIMsozNpKVqLXc++NzvVAIWggHMGk1qLeIrefuq+n4Ch3ke6qOEmhsxNRE?= =?utf-8?q?MxldLVMoCLSNMUalmYBo4WSbNcJ9RsMQwlKuwGD4H3vY6GxHauJ33hXCcbUCD1eFS?= =?utf-8?q?HMyHAe4BbrALblWxcAfXWE/4+gHR5DuvxxuluXHSOr1qEYv8VuVSxJaGbMjKf4Qdk?= =?utf-8?q?IWXQj0QLsS7iqTdxJKWUC0lQlyE0ygSTscF/8Bqy/KhVmadKmuxo+MxGoRtBfrhpe?= =?utf-8?q?+g3u4ZPoavHE/YYB8TMl3xeVRQPodwmKkTopnPOL+E/9a3BelD2bVcHyVxJfs677s?= =?utf-8?q?LrySdRfTCNHntki38tC4ZRdi0nsX9dyzXI2V94III3Ubl0zUMso/mH6/3kOAkiYzt?= =?utf-8?q?9XVaaK+gLH73yIjt+5u8UsLxltZPIpuRT74lTeYjSqsORogFsOMnFViR+/tuGrY+q?= =?utf-8?q?dMgB9ep+gP5KGyfeqbNEs/6sY+PYxRs1Bp4Hh54r7K6s8X8VV0+SpkpCXKdV8A6yx?= =?utf-8?q?4osopKTT6j639equbb85DqyCMSIWNnDCDcphe3Tjq49A9aiiYv773uR4In4K3mhFq?= =?utf-8?q?zlWE4hYjJRUIQLYmpgMBbKDWWRKar48y861kxkOB8sokZLGbsgcTekMnAhbV2+FHM?= =?utf-8?q?hMF5DmtsAH/zXrKITYoKqG0YcxnJl8Mg5MiRf0ratlzPtnErBDKB4FJJgAwX4FWhl?= =?utf-8?q?+G2UgujLoM+btwSwBboPlPBk/OTUBTCtEN0xRCjyYGK4PA4NAfXgbsB79Xue9hdwq?= =?utf-8?q?sWFo2T9tz1b81rR2skA6+Xnq1Ipn6aJdvCPwfkJODWibnzNLZMWd0vrsb4qIr1c7u?= =?utf-8?q?t0e5icn6s7er?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: c3301e05-3275-4c74-99b4-08dd5a6e619b X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB8558.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2025 16:13:48.8836 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZWMjAzGQ5xro2hzk54LxLb/5S+Gyz8ftW9EFahtp4m63MVRHOknysol5PpJdOTi9NrLkHGLEOMnJ8adZqa794g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4094 X-Patchwork-Delegate: kuba@kernel.org Dynamic clocks - such as PTP clocks - extend beyond the standard POSIX clock API by using ioctl calls. While file permissions are enforced for standard POSIX operations, they are not implemented for ioctl calls, since the POSIX layer cannot differentiate between calls which modify the clock's state (like enabling PPS output generation) and those that don't (such as retrieving the clock's PPS capabilities). On the other hand, drivers implementing the dynamic clocks lack the necessary information context to enforce permission checks themselves. Additionally, POSIX clock layer requires the WRITE permission even for readonly adjtime() operations before invoking the callback. Add a struct file pointer to the POSIX clock context and use it to implement the appropriate permission checks on PTP chardevs. Permit readonly adjtime() for dynamic clocks. Add a readonly option to testptp. Changes in v4: - Allow readonly adjtime() for dynamic clocks, as suggested by Thomas Changes in v3: - Reword the log message for commit against posix-clock and fix documentation of struct posix_clock_context, as suggested by Thomas Changes in v2: - Store file pointer in POSIX clock context rather than fmode in the PTP clock's private data, as suggested by Richard. - Move testptp.c changes into separate patch. Wojtek Wasko (3): posix-clock: Store file pointer in struct posix_clock_context ptp: Add PHC file mode checks. Allow RO adjtime() without FMODE_WRITE. testptp: Add option to open PHC in readonly mode drivers/ptp/ptp_chardev.c | 16 ++++++++++++ include/linux/posix-clock.h | 6 ++++- kernel/time/posix-clock.c | 3 ++- tools/testing/selftests/ptp/testptp.c | 37 +++++++++++++++++---------- 4 files changed, 46 insertions(+), 16 deletions(-)