clkdev DEV ID information is limited to an array of 20 bytes
(MAX_DEV_ID). It is possible that the ID could be longer than
that. If so, the lookup will fail because the "real ID" will
not match the copied value.
For instance, generating a device name for the I2C Designware
module using the PCI ID can result in a name of:
i2c_designware.39424
clkdev_create() will store:
i2c_designware.3942
The stored name is one off and will not match correctly during probe.
Increase the size of the ID to allow for a longer name.
Reviewed-by: Russell King (Oracle) <[email protected]>
Signed-off-by: Michael J. Ruhl <[email protected]>
---
v2: Removed CON_ID update and added example to commit
V3: Add r-b and move version info
drivers/clk/clkdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c
index ee37d0be6877..9cd80522ca2d 100644
--- a/drivers/clk/clkdev.c
+++ b/drivers/clk/clkdev.c
@@ -144,7 +144,7 @@ void clkdev_add_table(struct clk_lookup *cl, size_t num)
mutex_unlock(&clocks_mutex);
}
-#define MAX_DEV_ID 20
+#define MAX_DEV_ID 24
#define MAX_CON_ID 16
struct clk_lookup_alloc {
--
2.41.0
On Fri, Feb 23, 2024 at 03:25:56PM -0500, Michael J. Ruhl wrote:
> clkdev DEV ID information is limited to an array of 20 bytes
> (MAX_DEV_ID). It is possible that the ID could be longer than
> that. If so, the lookup will fail because the "real ID" will
> not match the copied value.
>
> For instance, generating a device name for the I2C Designware
> module using the PCI ID can result in a name of:
>
> i2c_designware.39424
>
> clkdev_create() will store:
>
> i2c_designware.3942
>
> The stored name is one off and will not match correctly during probe.
>
> Increase the size of the ID to allow for a longer name.
Reviewed-by: Andy Shevchenko <[email protected]>
--
With Best Regards,
Andy Shevchenko
Quoting Michael J. Ruhl (2024-02-23 12:25:56)
> clkdev DEV ID information is limited to an array of 20 bytes
> (MAX_DEV_ID). It is possible that the ID could be longer than
> that. If so, the lookup will fail because the "real ID" will
> not match the copied value.
>
> For instance, generating a device name for the I2C Designware
> module using the PCI ID can result in a name of:
>
> i2c_designware.39424
>
> clkdev_create() will store:
>
> i2c_designware.3942
>
> The stored name is one off and will not match correctly during probe.
>
> Increase the size of the ID to allow for a longer name.
>
> Reviewed-by: Russell King (Oracle) <[email protected]>
> Signed-off-by: Michael J. Ruhl <[email protected]>
> ---
Applied to clk-next