projects
/
linux-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'ceph-for-6.8-rc1' of https://github.com/ceph/ceph-client
[linux-block.git]
/
drivers
/
uio
/
uio.c
diff --git
a/drivers/uio/uio.c
b/drivers/uio/uio.c
index 62082d64ece00613a9d82eadd0552f6262cb9c10..2d572f6c8ec833023450136e3e2278d46d8937ae 100644
(file)
--- a/
drivers/uio/uio.c
+++ b/
drivers/uio/uio.c
@@
-466,13
+466,13
@@
static int uio_open(struct inode *inode, struct file *filep)
mutex_lock(&minor_lock);
idev = idr_find(&uio_idr, iminor(inode));
mutex_lock(&minor_lock);
idev = idr_find(&uio_idr, iminor(inode));
- mutex_unlock(&minor_lock);
if (!idev) {
ret = -ENODEV;
if (!idev) {
ret = -ENODEV;
+ mutex_unlock(&minor_lock);
goto out;
}
goto out;
}
-
get_device(&idev->dev);
get_device(&idev->dev);
+ mutex_unlock(&minor_lock);
if (!try_module_get(idev->owner)) {
ret = -ENODEV;
if (!try_module_get(idev->owner)) {
ret = -ENODEV;
@@
-1064,9
+1064,8
@@
void uio_unregister_device(struct uio_info *info)
wake_up_interruptible(&idev->wait);
kill_fasync(&idev->async_queue, SIGIO, POLL_HUP);
wake_up_interruptible(&idev->wait);
kill_fasync(&idev->async_queue, SIGIO, POLL_HUP);
- device_unregister(&idev->dev);
-
uio_free_minor(minor);
uio_free_minor(minor);
+ device_unregister(&idev->dev);
return;
}
return;
}