In ti_j721e_ufs_probe there is a call to clk_get_rate but the code after that attempts to detect an error from that call incorrectly uses IS_ERR_VALUE. Instead the test should just be for regular error codes. The call returns an unsigned long so that needs to be cast to a signed type first of all.
This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> --- Changes in v2: - Also check for clk_get_rate returning 0 and return -EIO if so. - Link to v1: https://lore.kernel.org/r/[email protected] --- drivers/ufs/ti-j721e-ufs.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/ufs/ti-j721e-ufs.c b/drivers/ufs/ti-j721e-ufs.c index c5c08610ffd0422c9cf9d8e85b0396e6102cb29a..176d9b0e5c3910915552088a0371859afee30f39 100644 --- a/drivers/ufs/ti-j721e-ufs.c +++ b/drivers/ufs/ti-j721e-ufs.c @@ -17,7 +17,7 @@ static int ti_j721e_ufs_probe(struct udevice *dev) { void __iomem *base; - unsigned int clock; + unsigned long clock; struct clk clk; u32 reg = 0; int ret; @@ -29,9 +29,9 @@ static int ti_j721e_ufs_probe(struct udevice *dev) } clock = clk_get_rate(&clk); - if (IS_ERR_VALUE(clock)) { + if ((long)clock <= 0) { dev_err(dev, "failed to get rate\n"); - return ret; + return clock ? clock : -EIO; } base = dev_remap_addr_index(dev, 0); --- base-commit: 7807ed921314cd7af83fd88162d0b8c6fb20a9ca change-id: 20250813-ufs_ti-dd699eb6524e Best regards, -- Andrew Goodbody <[email protected]>

