summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorXiubo Li <xiubli@redhat.com>2018-07-07 05:05:38 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-07-07 17:57:35 +0300
commit543af5861f41af0a5d2432f6fb5976af50f9cee5 (patch)
treeadc110b102263f523ddf3848f9e57bedb64c0c66 /include
parent9421e45f5ff3d558cf8b75a8cc0824530caf3453 (diff)
downloadlinux-543af5861f41af0a5d2432f6fb5976af50f9cee5.tar.xz
uio: change to use the mutex lock instead of the spin lock
We are hitting a regression with the following commit: commit a93e7b331568227500186a465fee3c2cb5dffd1f Author: Hamish Martin <hamish.martin@alliedtelesis.co.nz> Date: Mon May 14 13:32:23 2018 +1200 uio: Prevent device destruction while fds are open The problem is the addition of spin_lock_irqsave in uio_write. This leads to hitting uio_write -> copy_from_user -> _copy_from_user -> might_fault and the logs filling up with sleeping warnings. I also noticed some uio drivers allocate memory, sleep, grab mutexes from callouts like open() and release and uio is now doing spin_lock_irqsave while calling them. Reported-by: Mike Christie <mchristi@redhat.com> CC: Hamish Martin <hamish.martin@alliedtelesis.co.nz> Reviewed-by: Hamish Martin <hamish.martin@alliedtelesis.co.nz> Signed-off-by: Xiubo Li <xiubli@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/uio_driver.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/uio_driver.h b/include/linux/uio_driver.h
index 6c5f2074e14f..6f8b68cd460f 100644
--- a/include/linux/uio_driver.h
+++ b/include/linux/uio_driver.h
@@ -75,7 +75,7 @@ struct uio_device {
struct fasync_struct *async_queue;
wait_queue_head_t wait;
struct uio_info *info;
- spinlock_t info_lock;
+ struct mutex info_lock;
struct kobject *map_dir;
struct kobject *portio_dir;
};