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

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

 



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@xxxxxxxxx>
---
 .../userspace-api/media/mediactl/media-func-open.rst   |  4 ++--
 drivers/media/mc/mc-devnode.c                          | 10 +++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)

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);
-- 
2.43.0





[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux