From 74d826da3842ce893e943f9f23ddb7f07fc8d7fe Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Tue, 17 Nov 2020 11:51:54 +0200 Subject: [PATCH] iio: core: return -EINVAL when no ioctl handler has been run It seems that when this was tested the happy case was more tested. A few of the userspace apps rely on this returning negative error codes in case an ioctl() is not available. When running multiple ioctl() handlers or when calling an ioctl() that doesn't exist, IIO_IOCTL_UNHANDLED is returned. In that case -EINVAL should be returned. Fixes: 8dedcc3eee3a ("iio: core: centralize ioctl() calls to the main chardev") Signed-off-by: Alexandru Ardelean Link: https://lore.kernel.org/r/20201117095154.7189-1-alexandru.ardelean@analog.com Signed-off-by: Jonathan Cameron --- drivers/iio/industrialio-core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index 89f9af12c8e6..7cae46f9bc0d 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -1743,6 +1743,9 @@ static long iio_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) break; } + if (ret == IIO_IOCTL_UNHANDLED) + ret = -EINVAL; + out_unlock: mutex_unlock(&indio_dev->info_exist_lock);