Re: [PATCH] clk: uniphier: mux: fix signedness bug in get_parent
From: Kunihiko Hayashi
Date: Wed Mar 25 2026 - 01:13:00 EST
Hi,
On 2026/03/24 9:44, Stephen Boyd wrote:
Quoting Anas Iqbal (2026-03-18 04:02:51)
The uniphier_clk_mux_get_parent() function returns a u8, but
propagates negative error codes such as -EINVAL and regmap_read()
failures. These values are implicitly converted to large unsigned
integers, resulting in invalid parent indices.
The clk_ops.get_parent() callback is expected to return a valid
parent index and does not support error codes. Fix this by returning
0 as a safe fallback in error cases.
A large number will exceed the number of parents possible for the clk
and turn into a failure to find the parent in the parent map. There's
nothing to do here besides implement clk_ops::get_parent_hw()[1] and fix
all the drivers.
[1]
https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git/log/?h=clk-parent-rewrite
Certainly, the return value of .get_parent() is now u8, which doesn't
correctly detect an error in the function.
Some other implementations prevent .get_parent() from detecting regmap_read()
errors, but if it does, the read value is undefined.
If access to the parent fails, the only option is to propagate the error as
Stephen suggested, however, that affects all drivers, not just this one.
Thank you,
---
Best Regards
Kunihiko Hayashi