Unverified Commit 54900126 authored by John Madieu's avatar John Madieu Committed by Mark Brown
Browse files

spi: rzv2h-rspi: Fix silent failure in clock setup error path



rzv2h_rspi_setup_clock() is declared to return u32 but returns -EINVAL
when no valid clock parameters are found. Cast to u32, -EINVAL becomes
0xffffffea, which is a non-zero value. The caller in
rzv2h_rspi_prepare_message() guards against failure with:

	rspi->freq = rzv2h_rspi_setup_clock(rspi, speed_hz);
	if (!rspi->freq)
		return -EINVAL;

Because 0xffffffea is non-zero, the check is bypassed and the controller
proceeds to program SPBR/SPCMD with stale values, leading to an unknown
bit rate.

Return 0 on the failed-search path, consistent with the existing
clk_set_rate() failure path which already returns 0.

Fixes: 77d93158 ("spi: rzv2h-rspi: make transfer clock rate finding chip-specific")
Signed-off-by: default avatarJohn Madieu <john.madieu.xa@bp.renesas.com>
Reviewed-by: default avatarBiju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: default avatarCosmin Tanislav <cosmin-gabriel.tanislav.xa@renesas.com>
Link: https://patch.msgid.link/20260425024725.2393632-1-john.madieu.xa@bp.renesas.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 254f4963
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -579,7 +579,7 @@ static u32 rzv2h_rspi_setup_clock(struct rzv2h_rspi_priv *rspi, u32 hz)
		rspi->info->find_pclk_rate(rspi->pclk, hz, &best_clock);

	if (!best_clock.clk_rate)
		return -EINVAL;
		return 0;

	ret = clk_set_rate(best_clock.clk, best_clock.clk_rate);
	if (ret)