[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250211150913.772545-2-wwasko@nvidia.com>
Date: Tue, 11 Feb 2025 17:09:11 +0200
From: Wojtek Wasko <wwasko@...dia.com>
To: netdev@...r.kernel.org
Cc: richardcochran@...il.com,
vadim.fedorenko@...ux.dev,
kuba@...nel.org,
horms@...nel.org
Subject: [PATCH net-next v2 1/3] posix clocks: Store file pointer in clock context
Dynamic clocks (e.g. PTP clocks) need access to the permissions with
which the clock was opened to enforce proper access control.
Native POSIX clocks have access to this information via
posix_clock_desc. However, it is not accessible from the implementation
of dynamic clocks.
Add struct file* to POSIX clock context for access from dynamic clocks.
Signed-off-by: Wojtek Wasko <wwasko@...dia.com>
---
include/linux/posix-clock.h | 6 +++++-
kernel/time/posix-clock.c | 1 +
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/include/linux/posix-clock.h b/include/linux/posix-clock.h
index ef8619f48920..40fa204baafc 100644
--- a/include/linux/posix-clock.h
+++ b/include/linux/posix-clock.h
@@ -95,10 +95,13 @@ struct posix_clock {
* struct posix_clock_context - represents clock file operations context
*
* @clk: Pointer to the clock
+ * @fp: Pointer to the file used for opening the clock
* @private_clkdata: Pointer to user data
*
* Drivers should use struct posix_clock_context during specific character
- * device file operation methods to access the posix clock.
+ * device file operation methods to access the posix clock. In particular,
+ * the file pointer can be used to verify correct access mode for custom
+ * ioctl calls.
*
* Drivers can store a private data structure during the open operation
* if they have specific information that is required in other file
@@ -106,6 +109,7 @@ struct posix_clock {
*/
struct posix_clock_context {
struct posix_clock *clk;
+ struct file *fp;
void *private_clkdata;
};
diff --git a/kernel/time/posix-clock.c b/kernel/time/posix-clock.c
index 1af0bb2cc45c..4e114e34a6e0 100644
--- a/kernel/time/posix-clock.c
+++ b/kernel/time/posix-clock.c
@@ -129,6 +129,7 @@ static int posix_clock_open(struct inode *inode, struct file *fp)
goto out;
}
pccontext->clk = clk;
+ pccontext->fp = fp;
if (clk->ops.open) {
err = clk->ops.open(pccontext, fp->f_mode);
if (err) {
--
2.39.3
Powered by blists - more mailing lists