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. > 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. -- 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