mbox series

[net-next,v2,0/3] Permission checks for dynamic POSIX clocks

Message ID 20250211150913.772545-1-wwasko@nvidia.com (mailing list archive)
Headers show
Series Permission checks for dynamic POSIX clocks | expand

Message

Wojtek Wasko Feb. 11, 2025, 3:09 p.m. UTC
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.

Add a struct file pointer to the POSIX clock context and use it to
implement the appropriate permission checks on PTP chardevs. Add a
readonly option to testptp.

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 clocks: Store file pointer in clock context
  ptp: Add file permission checks on PHCs
  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             |  1 +
 tools/testing/selftests/ptp/testptp.c | 37 +++++++++++++++++----------
 4 files changed, 45 insertions(+), 15 deletions(-)

Comments

Richard Cochran Feb. 11, 2025, 4:51 p.m. UTC | #1
On Tue, Feb 11, 2025 at 05:09:10PM +0200, Wojtek Wasko wrote:
> 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.
> 
> Add a struct file pointer to the POSIX clock context and use it to
> implement the appropriate permission checks on PTP chardevs. Add a
> readonly option to testptp.
> 
> 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 clocks: Store file pointer in clock context
>   ptp: Add file permission checks on PHCs
>   testptp: Add option to open PHC in readonly mode

For the series:

Acked-by: Richard Cochran <richardcochran@gmail.com>
Vadim Fedorenko Feb. 11, 2025, 5:07 p.m. UTC | #2
On 11/02/2025 15:09, Wojtek Wasko wrote:
> 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.
> 
> Add a struct file pointer to the POSIX clock context and use it to
> implement the appropriate permission checks on PTP chardevs. Add a
> readonly option to testptp.
> 
> 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 clocks: Store file pointer in clock context
>    ptp: Add file permission checks on PHCs
>    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             |  1 +
>   tools/testing/selftests/ptp/testptp.c | 37 +++++++++++++++++----------
>   4 files changed, 45 insertions(+), 15 deletions(-)
> 

For the series:
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>