IIO trigger names are not actually unique

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

 



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.

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.

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.

-- 
Regards,
Leonard
--
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