]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ptp: Return -EINVAL on ptp_clock_register if required ops are NULL
authorTim Hostetler <thostet@google.com>
Tue, 4 Nov 2025 22:59:15 +0000 (14:59 -0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 6 Nov 2025 01:39:17 +0000 (17:39 -0800)
ptp_clock should never be registered unless it stubs one of gettimex64()
or gettime64() and settime64(). WARN_ON_ONCE and error out if either set
of function pointers is null.

For consistency, n_alarm validation is also folded into the
WARN_ON_ONCE.

Suggested-by: Kuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: Harshitha Ramamurthy <hramamurthy@google.com>
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Signed-off-by: Tim Hostetler <thostet@google.com>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Link: https://patch.msgid.link/20251104225915.2040080-1-thostet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/ptp/ptp_clock.c

index ef020599b77118d7701cd132837f9c414c3ebcf3..b0e167c0b3ebdacda59200edfde30bff1c00c988 100644 (file)
@@ -322,7 +322,9 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
        char debugfsname[16];
        size_t size;
 
-       if (info->n_alarm > PTP_MAX_ALARMS)
+       if (WARN_ON_ONCE(info->n_alarm > PTP_MAX_ALARMS ||
+                        (!info->gettimex64 && !info->gettime64) ||
+                        !info->settime64))
                return ERR_PTR(-EINVAL);
 
        /* Initialize a clock structure. */