diff mbox series

media: mc: return ENODEV instead of EIO/ENXIO when dev is, unregistered

Message ID 41bb718b-2c6d-41aa-b093-b800dffcbe1e@xs4all.nl
State New
Headers show
Series media: mc: return ENODEV instead of EIO/ENXIO when dev is, unregistered | expand

Commit Message

Hans Verkuil Feb. 23, 2024, 9:34 a.m. UTC
If the media device is unregistered, the read/write/ioctl file ops
returned EIO instead of ENODEV. And open returned ENXIO instead of the
linux kernel standard of ENODEV.

Change the error code to ENODEV and document this as well in
media-func-open.rst.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
---
 .../userspace-api/media/mediactl/media-func-open.rst   |  4 ++--
 drivers/media/mc/mc-devnode.c                          | 10 +++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)
diff mbox series

Patch

diff --git a/Documentation/userspace-api/media/mediactl/media-func-open.rst b/Documentation/userspace-api/media/mediactl/media-func-open.rst
index 24487cb0a308..8c1c7ebefdb1 100644
--- a/Documentation/userspace-api/media/mediactl/media-func-open.rst
+++ b/Documentation/userspace-api/media/mediactl/media-func-open.rst
@@ -61,5 +61,5 @@  ENFILE
 ENOMEM
     Insufficient kernel memory was available.

-ENXIO
-    No device corresponding to this device special file exists.
+ENODEV
+    Device not found or was removed.
diff --git a/drivers/media/mc/mc-devnode.c b/drivers/media/mc/mc-devnode.c
index 7f67825c8757..fbf76e1414de 100644
--- a/drivers/media/mc/mc-devnode.c
+++ b/drivers/media/mc/mc-devnode.c
@@ -75,7 +75,7 @@  static ssize_t media_read(struct file *filp, char __user *buf,
 	if (!devnode->fops->read)
 		return -EINVAL;
 	if (!media_devnode_is_registered(devnode))
-		return -EIO;
+		return -ENODEV;
 	return devnode->fops->read(filp, buf, sz, off);
 }

@@ -87,7 +87,7 @@  static ssize_t media_write(struct file *filp, const char __user *buf,
 	if (!devnode->fops->write)
 		return -EINVAL;
 	if (!media_devnode_is_registered(devnode))
-		return -EIO;
+		return -ENODEV;
 	return devnode->fops->write(filp, buf, sz, off);
 }

@@ -114,7 +114,7 @@  __media_ioctl(struct file *filp, unsigned int cmd, unsigned long arg,
 		return -ENOTTY;

 	if (!media_devnode_is_registered(devnode))
-		return -EIO;
+		return -ENODEV;

 	return ioctl_func(filp, cmd, arg);
 }
@@ -152,11 +152,11 @@  static int media_open(struct inode *inode, struct file *filp)
 	 */
 	mutex_lock(&media_devnode_lock);
 	devnode = container_of(inode->i_cdev, struct media_devnode, cdev);
-	/* return ENXIO if the media device has been removed
+	/* return ENODEV if the media device has been removed
 	   already or if it is not registered anymore. */
 	if (!media_devnode_is_registered(devnode)) {
 		mutex_unlock(&media_devnode_lock);
-		return -ENXIO;
+		return -ENODEV;
 	}
 	/* and increase the device refcount */
 	get_device(&devnode->dev);