diff mbox series

clkdev: Update clkdev id usage to allow for longer names

Message ID 20240223141857.3794855-1-michael.j.ruhl@intel.com (mailing list archive)
State New, archived
Headers show
Series clkdev: Update clkdev id usage to allow for longer names | expand

Commit Message

Michael J. Ruhl Feb. 23, 2024, 2:18 p.m. UTC
clkdev ID information is limited to arrays of 20 and 16 bytes
(MAX_DEV_ID/MAX_CON_ID).  It is possible that the IDs could be
longer that.  If so, the lookup will fail because the "real ID"
will not match the copied value.

Increase the size of the IDs to allow for longer names.

Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
 drivers/clk/clkdev.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Andy Shevchenko Feb. 23, 2024, 3:48 p.m. UTC | #1
On Fri, Feb 23, 2024 at 09:18:14AM -0500, Michael J. Ruhl wrote:
> clkdev ID information is limited to arrays of 20 and 16 bytes
> (MAX_DEV_ID/MAX_CON_ID).  It is possible that the IDs could be
> longer that.  If so, the lookup will fail because the "real ID"
> will not match the copied value.

Perhaps you need to add a real example.

> Increase the size of the IDs to allow for longer names.

...

> -#define MAX_DEV_ID	20
> -#define MAX_CON_ID	16
> +#define MAX_DEV_ID	32
> +#define MAX_CON_ID	32

Do we need to alter both?
Michael J. Ruhl Feb. 23, 2024, 4:09 p.m. UTC | #2
>-----Original Message-----
>From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
>Sent: Friday, February 23, 2024 10:48 AM
>To: Ruhl, Michael J <michael.j.ruhl@intel.com>
>Cc: linux@armlinux.org.uk; linux-arm-kernel@lists.infradead.org; linux-
>kernel@vger.kernel.org
>Subject: Re: [PATCH] clkdev: Update clkdev id usage to allow for longer names
>
>On Fri, Feb 23, 2024 at 09:18:14AM -0500, Michael J. Ruhl wrote:
>> clkdev ID information is limited to arrays of 20 and 16 bytes
>> (MAX_DEV_ID/MAX_CON_ID).  It is possible that the IDs could be
>> longer that.  If so, the lookup will fail because the "real ID"
>> will not match the copied value.
>
>Perhaps you need to add a real example.

How about:

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 IDs to allow for longer names.
>
>...
>
>> -#define MAX_DEV_ID	20
>> -#define MAX_CON_ID	16
>> +#define MAX_DEV_ID	32
>> +#define MAX_CON_ID	32
>
>Do we need to alter both?

It wasn't clear to why there was a difference in sizes.  At the moment the CON_ID isn't
causing me an issue.  Shall I drop that part of the change?

Thanks!

Mike

>--
>With Best Regards,
>Andy Shevchenko
>
Andy Shevchenko Feb. 23, 2024, 4:19 p.m. UTC | #3
On Fri, Feb 23, 2024 at 04:09:03PM +0000, Ruhl, Michael J wrote:
> >From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> >Sent: Friday, February 23, 2024 10:48 AM
> >On Fri, Feb 23, 2024 at 09:18:14AM -0500, Michael J. Ruhl wrote:
> >> clkdev ID information is limited to arrays of 20 and 16 bytes
> >> (MAX_DEV_ID/MAX_CON_ID).  It is possible that the IDs could be
> >> longer that.  If so, the lookup will fail because the "real ID"
> >> will not match the copied value.
> >
> >Perhaps you need to add a real example.
> 
> How about:
> 
> 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:

clkdev_create()

> i2c_designware.3942
> 
> The stored name is one off and will not match correctly during probe.
> 
> >> Increase the size of the IDs to allow for longer names.

...

> >> -#define MAX_DEV_ID	20
> >> -#define MAX_CON_ID	16
> >> +#define MAX_DEV_ID	32

So with the above example increasing by 4 is enough, right?
Maybe we can be modest for now as it will solve your issue?

#define MAX_DEV_ID	24

> >> +#define MAX_CON_ID	32
> >
> >Do we need to alter both?
> 
> It wasn't clear to why there was a difference in sizes.  At the moment the CON_ID isn't
> causing me an issue.  Shall I drop that part of the change?

I think so.
diff mbox series

Patch

diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c
index ee37d0be6877..38549db691f4 100644
--- a/drivers/clk/clkdev.c
+++ b/drivers/clk/clkdev.c
@@ -144,8 +144,8 @@  void clkdev_add_table(struct clk_lookup *cl, size_t num)
 	mutex_unlock(&clocks_mutex);
 }
 
-#define MAX_DEV_ID	20
-#define MAX_CON_ID	16
+#define MAX_DEV_ID	32
+#define MAX_CON_ID	32
 
 struct clk_lookup_alloc {
 	struct clk_lookup cl;