On Wed, Jun 16, 2021 at 7:01 PM Paul Cercueil <paul@xxxxxxxxxxxxxxx> wrote: > > Extended names are a problem for user-space as they make the filenames > in sysfs sometimes not parsable. They are now deprecated in favor of > labels. > > This change makes sure that a device driver won't provide both labels > and extended names for its channels. It has never been the case and we > don't want it to happen. > Reviewed-by: Alexandru Ardelean <ardeleanalex@xxxxxxxxx> > Signed-off-by: Paul Cercueil <paul@xxxxxxxxxxxxxxx> > --- > drivers/iio/industrialio-core.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > index 59efb36db2c7..81f40dab778a 100644 > --- a/drivers/iio/industrialio-core.c > +++ b/drivers/iio/industrialio-core.c > @@ -1836,6 +1836,24 @@ static int iio_check_unique_scan_index(struct iio_dev *indio_dev) > return 0; > } > > +static int iio_check_extended_name(const struct iio_dev *indio_dev) > +{ > + unsigned int i; > + > + if (!indio_dev->info->read_label) > + return 0; > + > + for (i = 0; i < indio_dev->num_channels; i++) { > + if (indio_dev->channels[i].extend_name) { > + dev_err(&indio_dev->dev, > + "Cannot use labels and extend_name at the same time\n"); > + return -EINVAL; > + } > + } > + > + return 0; > +} > + > static const struct iio_buffer_setup_ops noop_ring_setup_ops; > > int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod) > @@ -1860,6 +1878,10 @@ int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod) > if (ret < 0) > return ret; > > + ret = iio_check_extended_name(indio_dev); > + if (ret < 0) > + return ret; > + > iio_device_register_debugfs(indio_dev); > > ret = iio_buffers_alloc_sysfs_and_mask(indio_dev); > -- > 2.30.2 >