]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
iio: core: return ENODEV if ioctl is unknown
authorAlexandru Ardelean <aardelean@deviqon.com>
Mon, 3 May 2021 14:43:50 +0000 (17:43 +0300)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 18 Jun 2021 09:07:29 +0000 (11:07 +0200)
BugLink: https://bugs.launchpad.net/bugs/1931292
[ Upstream commit af0670b0bf1b116fd729b1b1011cf814bc34e12e ]

When the ioctl() mechanism was introduced in IIO core to centralize the
registration of all ioctls in one place via commit 8dedcc3eee3ac ("iio:
core: centralize ioctl() calls to the main chardev"), the return code was
changed from ENODEV to EINVAL, when the ioctl code isn't known.

This was done by accident.

This change reverts back to the old behavior, where if the ioctl() code
isn't known, ENODEV is returned (vs EINVAL).

This was brought into perspective by this patch:
  https://lore.kernel.org/linux-iio/20210428150815.136150-1-paul@crapouillou.net/

Fixes: 8dedcc3eee3ac ("iio: core: centralize ioctl() calls to the main chardev")
Signed-off-by: Alexandru Ardelean <aardelean@deviqon.com>
Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Tested-by: Paul Cercueil <paul@crapouillou.net>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/iio/industrialio-core.c

index c2e4c267c36b2aac324e0c7363a0caee04bf1adb..afba32b5781475ec01b2babc6465acc5110b6075 100644 (file)
@@ -1698,7 +1698,6 @@ static long iio_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
        if (!indio_dev->info)
                goto out_unlock;
 
-       ret = -EINVAL;
        list_for_each_entry(h, &iio_dev_opaque->ioctl_handlers, entry) {
                ret = h->ioctl(indio_dev, filp, cmd, arg);
                if (ret != IIO_IOCTL_UNHANDLED)
@@ -1706,7 +1705,7 @@ static long iio_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
        }
 
        if (ret == IIO_IOCTL_UNHANDLED)
-               ret = -EINVAL;
+               ret = -ENODEV;
 
 out_unlock:
        mutex_unlock(&indio_dev->info_exist_lock);