[PATCH 05/25] drivers/i2c: Use static const char arrays
Jonathan Cameron
kernel at jic23.retrosnub.co.uk
Tue Sep 14 08:57:59 EDT 2010
On 09/14/10 08:36, Lothar Waßmann wrote:
> Hi,
>
> Jonathan Cameron writes:
>> Commit message is somewhat inaccurate...
>>
>> On 09/13/10 20:47, Joe Perches wrote:
>>> Signed-off-by: Joe Perches <joe at perches.com>
>>> ---
>>> drivers/i2c/busses/i2c-stu300.c | 4 ++--
>>> 1 files changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/i2c/busses/i2c-stu300.c b/drivers/i2c/busses/i2c-stu300.c
>>> index 495be45..2f7c09c 100644
>>> --- a/drivers/i2c/busses/i2c-stu300.c
>>> +++ b/drivers/i2c/busses/i2c-stu300.c
>>> @@ -871,7 +871,7 @@ stu300_probe(struct platform_device *pdev)
>>> struct resource *res;
>>> int bus_nr;
>>> int ret = 0;
>>> - char clk_name[] = "I2C0";
>>> + char clk_name[sizeof("I2Cx")];
>>>
>>> dev = kzalloc(sizeof(struct stu300_dev), GFP_KERNEL);
>>> if (!dev) {
>>> @@ -881,7 +881,7 @@ stu300_probe(struct platform_device *pdev)
>>> }
>>>
>>> bus_nr = pdev->id;
>>> - clk_name[3] += (char)bus_nr;
>>> + sprintf(clk_name, "I2C%c", '0' + bus_nr);
>> I'm guessing that there are never more than a couple of these.
>> Why is this method a better bet than just putting %d?
>>
> '%c' will only ever produce one byte of output while '%d' may
> produce up to 11 bytes depending on the value of bus_nr thus
> overflowing the buffer.
Then use an snprintf, or apply a check to ensure it isn't bigger than
9.
If you don't mind having clocks named i2c$ or something equally
silly then I guess this is fine. To my mind, if that is possible
this is a bug that should be fixed rather than avoided.
More information about the linux-arm-kernel
mailing list