Re: IIO trigger names are not actually unique

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/05/16 10:04, Lars-Peter Clausen wrote:
> On 05/05/2016 01:52 PM, Crestez Dan Leonard wrote:
>> Hello,
>>
>> I've been looking at trigger code and it seems to me that trigger->name
>> is not guaranteed to be unique. This is despite the fact that it's
>> documented as "@name: [DRIVER] unique name" on top of struct
>> iio_trigger. Just like indio_dev->name it seems to be a mostly cosmetic
>> label.
>>
>> You can easily create a software trigger with a duplicate name if you
>> enable CONFIG_IIO_HRTIMER_TRIGGER:
>>
>> mkdir /sys/kernel/config/iio/triggers/hrtimer/`cat
>> /sys/bus/iio/devices/trigger0/name`
>>
>> It seems that trigger names are set at allocation time, mostly through
>> some variant of:
>>
>>     iio_trigger_alloc("%s-dev%d", indio_dev->name, indio_dev->id);
>>
>> indio_dev->name is not guaranteed to be unique but indio_dev->id is. The
>> are some exceptions, including st_sensors which does:
>>
>>     iio_trigger_alloc("%s-trigger", indio_dev->name);
>>
>> Since indio_dev->name is just the model name it seems that attaching two
>> identical st_sensors devices will create two triggers with the same name.
>>
> 
> Yeah, this is certainly broken.
> 
>> The "current_trigger" for an iio_device is identified by name. If you
>> have two triggers with the same name then the "first one" will be picked
>> up, probably in registration order.
>>
>> One solution would be to refuse to register triggers with duplicate
>> names but that might cause probe errors in some cases.
>>
> 
> Well, it is broken anyway and wont work as expected, which means nobody
> probably ever ran such a configuration, so we might return an error to
> prevent unexpected behavior.
Agreed - I think that would be a safe ABI fix to make.
> 
>> Another option would be to just warn on duplicate names and provide a
>> separate current_trigger_id which identifies the current trigger by
>> numeric ID. In general it seems to me that it's better to identify
>> entities by numbers rather than strings.
> 
> We could support writing triggerX to current_name as an alternative to the
> name to get a unique identifier.
That would also work fine as far as I'm concerned.  Mostly a case of documenting
that case clearly in the ABI docs.
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux