[PATCH linux 1/2] i2c: aspeed: Don't rename added devices
Milton Miller II
miltonm at us.ibm.com
Sun Feb 14 11:35:16 AEDT 2016
On 02/11/2016 10:23PM, Joel Stanley wrote:
>Subject: Re: [PATCH linux 1/2] i2c: aspeed: Don't rename added devices
>
>On Thu, Feb 11, 2016 at 12:00 PM, OpenBMC Patches
<openbmc-patches at stwcx.xyz> wrote:
>> From: "Milton D. Miller II" <miltonm at us.ibm.com>
>>
>> Changing the name of a device with dev_set_name after device_add
>> is not allowed.
>>
>> However, of_create_device takes a bus_id parameter that specifies
>> the name of the platform device being added.
>>
>> This does mean the bus property has to be retrieved multiple times.
>> Creation is skiped if there is trouble retrieving or formatting
>> the name.
Spell checking this pointed out skipped above is missing a p in the
commit message.
>
> Ok, this approach looks alright.
>
>> diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c
>> index 5488233..ccb438f 100644
>> for_each_child_of_node(pdev->dev.of_node, np) {
>> - of_platform_device_create(np, NULL, &pdev->dev);
>> + int ret;
>> + u32 bus_num;
>> + char bus_id[sizeof("i2c-12345")];
>
> Clever, but I don't think it's kernel style. A constant will do.
git grep 'sizeof("' | wc -l
yields 235 occurrences, 94 with an additional \[ in front. Including
well maintained sections of the kernel like vsnprintf for uuid length
and network code for formatting ip addresses.
I admit the 5 digit bus number is a bit arbitrary, but I think the origin of
a constant will be less clear than this code.
>> +
>> + ret = snprintf(bus_id, sizeof(bus_id), "i2c-%u", bus_num);
>> + if (ret >= sizeof(bus_id))
>> + continue;
>
> You should check for a negative value as well.
It's defined to return "the number of characters which would be written to the buffer",
not sure how that can ever be < 0 other than the undefined overflow of the int type.
vscnprintf doesn't consider a need to check for < 0. The size_t input of the underlying
vsnprintf is checked vs INT_MAX and returns 0 in that case.
Can you point to other kernel code that checks printf family for returns < 0 ?
Thanks,
milton
More information about the openbmc
mailing list