Description
In the Linux kernel, the following vulnerability has been resolved: rtc: mpfs: fix unchecked devm_clk_get() error pointer in probe() devm_clk_get(&pdev->dev, "rtcref")'s return value was passed straight into clk_get_rate() without checking it for an error first, unlike the "rtc" clock a few lines above which is correctly checked with IS_ERR(). clk_get_rate() only guards against a NULL clk, not an error pointer: if (!clk) return 0; ... rate = clk_core_get_rate_recalc(clk->core); so if devm_clk_get() ever returns an error pointer here (for example ERR_PTR(-EPROBE_DEFER), which is the normal, expected outcome if the clkcfg clock-provider this RTC depends on has not registered its clocks yet by the time this driver probes), clk_get_rate() dereferences that error pointer instead of returning 0, crashing instead of letting probe defer. Capture the clock in the existing 'clk' local and check it with IS_ERR() before calling clk_get_rate(), matching the handling already used for the "rtc" clock in this same function.
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
0b31d703598dc1993867597bbd45e87d824fc427 to < 7f59e824a4403e156cf930fe556b75139452099eaffected0b31d703598dc1993867597bbd45e87d824fc427 to < ab741d1b714b4acc605f3d14cdc4120f87341ed1affected0b31d703598dc1993867597bbd45e87d824fc427 to < 74dc7c52946e3d47c40edd0875adb7cc15937066affected0b31d703598dc1993867597bbd45e87d824fc427 to < cfd70c9b19846c524f2b6195a7484bdf22071ccfaffected0b31d703598dc1993867597bbd45e87d824fc427 to < 8a03f8422fa08eed335c51bccb612a3d81739ff2affected0b31d703598dc1993867597bbd45e87d824fc427 to < ac41b05d15db3134e839148290d67415ee0bdb58affected
Linux Linux
Default version status: affected
6.0affected0 to < 6.0unaffected6.1.191 to ≤ 6.1.*unaffected6.6.160 to ≤ 6.6.*unaffected6.12.113 to ≤ 6.12.*unaffected6.18.56 to ≤ 6.18.*unaffected7.2.10 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/7f59e824a4403e156cf930fe556b75139452099e ↗
- https://git.kernel.org/stable/c/ab741d1b714b4acc605f3d14cdc4120f87341ed1 ↗
- https://git.kernel.org/stable/c/74dc7c52946e3d47c40edd0875adb7cc15937066 ↗
- https://git.kernel.org/stable/c/cfd70c9b19846c524f2b6195a7484bdf22071ccf ↗
- https://git.kernel.org/stable/c/8a03f8422fa08eed335c51bccb612a3d81739ff2 ↗
- https://git.kernel.org/stable/c/ac41b05d15db3134e839148290d67415ee0bdb58 ↗