Skip to content
CVE PROGRAM SOURCE RECORD7.1 High

CVE-2024-50195

posix-clock: Fix missing timespec64 check in pc_clock_settime()

Description

In the Linux kernel, the following vulnerability has been resolved: posix-clock: Fix missing timespec64 check in pc_clock_settime() As Andrew pointed out, it will make sense that the PTP core checked timespec64 struct's tv_sec and tv_nsec range before calling ptp->info->settime64(). As the man manual of clock_settime() said, if tp.tv_sec is negative or tp.tv_nsec is outside the range [0..999,999,999], it should return EINVAL, which include dynamic clocks which handles PTP clock, and the condition is consistent with timespec64_valid(). As Thomas suggested, timespec64_valid() only check the timespec is valid, but not ensure that the time is in a valid range, so check it ahead using timespec64_valid_strict() in pc_clock_settime() and return -EINVAL if not valid. There are some drivers that use tp->tv_sec and tp->tv_nsec directly to write registers without validity checks and assume that the higher layer has checked it, which is dangerous and will benefit from this, such as hclge_ptp_settime(), igb_ptp_settime_i210(), _rcar_gen4_ptp_settime(), and some drivers can remove the checks of itself.

Affected products

Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.

Linux Linux

Default version status: unaffected

  • 0606f422b453f76c31ab2b1bd52943ff06a2dcf2 to < 29f085345cde24566efb751f39e5d367c381c584affected
  • 0606f422b453f76c31ab2b1bd52943ff06a2dcf2 to < e0c966bd3e31911b57ef76cec4c5796ebd88e512affected
  • 0606f422b453f76c31ab2b1bd52943ff06a2dcf2 to < 673a1c5a2998acbd429d6286e6cad10f17f4f073affected
  • 0606f422b453f76c31ab2b1bd52943ff06a2dcf2 to < c8789fbe2bbf75845e45302cba6ffa44e1884d01affected
  • 0606f422b453f76c31ab2b1bd52943ff06a2dcf2 to < 27abbde44b6e71ee3891de13e1a228aa7ce95bfeaffected
  • 0606f422b453f76c31ab2b1bd52943ff06a2dcf2 to < a3f169e398215e71361774d13bf91a0101283ac2affected
  • 0606f422b453f76c31ab2b1bd52943ff06a2dcf2 to < 1ff7247101af723731ea42ed565d54fb8f341264affected
  • 0606f422b453f76c31ab2b1bd52943ff06a2dcf2 to < d8794ac20a299b647ba9958f6d657051fc51a540affected

Linux Linux

Default version status: affected

  • 2.6.39affected
  • 0 to < 2.6.39unaffected
  • 4.19.323 to ≤ 4.19.*unaffected
  • 5.4.285 to ≤ 5.4.*unaffected
  • 5.10.228 to ≤ 5.10.*unaffected
  • 5.15.169 to ≤ 5.15.*unaffected
  • 6.1.114 to ≤ 6.1.*unaffected
  • 6.6.58 to ≤ 6.6.*unaffected
  • 6.11.5 to ≤ 6.11.*unaffected
  • 6.12 to ≤ *unaffected

References