Skip to content

Commit e3e4e56

Browse files
committed
Merge branch 'posix-clock-fix-missing-timespec64-check-for-ptp-clock'
Jinjie Ruan says: ==================== posix-clock: Fix missing timespec64 check for PTP clock Check timespec64 in pc_clock_settime() for PTP clock as the man manual of clock_settime() said. ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 0b84db5 + ea531dc commit e3e4e56

File tree

2 files changed

+17
-21
lines changed

2 files changed

+17
-21
lines changed

drivers/net/ethernet/microchip/lan743x_ptp.c

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -401,28 +401,21 @@ static int lan743x_ptpci_settime64(struct ptp_clock_info *ptpci,
401401
u32 nano_seconds = 0;
402402
u32 seconds = 0;
403403

404-
if (ts) {
405-
if (ts->tv_sec > 0xFFFFFFFFLL ||
406-
ts->tv_sec < 0) {
407-
netif_warn(adapter, drv, adapter->netdev,
408-
"ts->tv_sec out of range, %lld\n",
409-
ts->tv_sec);
410-
return -ERANGE;
411-
}
412-
if (ts->tv_nsec >= 1000000000L ||
413-
ts->tv_nsec < 0) {
414-
netif_warn(adapter, drv, adapter->netdev,
415-
"ts->tv_nsec out of range, %ld\n",
416-
ts->tv_nsec);
417-
return -ERANGE;
418-
}
419-
seconds = ts->tv_sec;
420-
nano_seconds = ts->tv_nsec;
421-
lan743x_ptp_clock_set(adapter, seconds, nano_seconds, 0);
422-
} else {
423-
netif_warn(adapter, drv, adapter->netdev, "ts == NULL\n");
424-
return -EINVAL;
404+
if (ts->tv_sec > 0xFFFFFFFFLL) {
405+
netif_warn(adapter, drv, adapter->netdev,
406+
"ts->tv_sec out of range, %lld\n",
407+
ts->tv_sec);
408+
return -ERANGE;
409+
}
410+
if (ts->tv_nsec < 0) {
411+
netif_warn(adapter, drv, adapter->netdev,
412+
"ts->tv_nsec out of range, %ld\n",
413+
ts->tv_nsec);
414+
return -ERANGE;
425415
}
416+
seconds = ts->tv_sec;
417+
nano_seconds = ts->tv_nsec;
418+
lan743x_ptp_clock_set(adapter, seconds, nano_seconds, 0);
426419

427420
return 0;
428421
}

kernel/time/posix-clock.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,9 @@ static int pc_clock_settime(clockid_t id, const struct timespec64 *ts)
318318
goto out;
319319
}
320320

321+
if (!timespec64_valid_strict(ts))
322+
return -EINVAL;
323+
321324
if (cd.clk->ops.clock_settime)
322325
err = cd.clk->ops.clock_settime(cd.clk, ts);
323326
else

0 commit comments

Comments
 (0)