summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/counter/counter-chrdev.c6
-rw-r--r--drivers/counter/counter-sysfs.c13
-rw-r--r--include/linux/counter.h7
3 files changed, 3 insertions, 23 deletions
diff --git a/drivers/counter/counter-chrdev.c b/drivers/counter/counter-chrdev.c
index 967c94ae95bb..b747dc81cfc6 100644
--- a/drivers/counter/counter-chrdev.c
+++ b/drivers/counter/counter-chrdev.c
@@ -384,10 +384,6 @@ static int counter_chrdev_open(struct inode *inode, struct file *filp)
typeof(*counter),
chrdev);
- /* Ensure chrdev is not opened more than 1 at a time */
- if (!atomic_add_unless(&counter->chrdev_lock, 1, 1))
- return -EBUSY;
-
get_device(&counter->dev);
filp->private_data = counter;
@@ -419,7 +415,6 @@ out_unlock:
mutex_unlock(&counter->ops_exist_lock);
put_device(&counter->dev);
- atomic_dec(&counter->chrdev_lock);
return ret;
}
@@ -445,7 +440,6 @@ int counter_chrdev_add(struct counter_device *const counter)
mutex_init(&counter->events_lock);
/* Initialize character device */
- atomic_set(&counter->chrdev_lock, 0);
cdev_init(&counter->chrdev, &counter_fops);
/* Allocate Counter events queue */
diff --git a/drivers/counter/counter-sysfs.c b/drivers/counter/counter-sysfs.c
index c2fddbb0d442..8c2d7c29ea59 100644
--- a/drivers/counter/counter-sysfs.c
+++ b/drivers/counter/counter-sysfs.c
@@ -796,25 +796,18 @@ static int counter_events_queue_size_write(struct counter_device *counter,
u64 val)
{
DECLARE_KFIFO_PTR(events, struct counter_event);
- int err = 0;
-
- /* Ensure chrdev is not opened more than 1 at a time */
- if (!atomic_add_unless(&counter->chrdev_lock, 1, 1))
- return -EBUSY;
+ int err;
/* Allocate new events queue */
err = kfifo_alloc(&events, val, GFP_KERNEL);
if (err)
- goto exit_early;
+ return err;
/* Swap in new events queue */
kfifo_free(&counter->events);
counter->events.kfifo = events.kfifo;
-exit_early:
- atomic_dec(&counter->chrdev_lock);
-
- return err;
+ return 0;
}
static struct counter_comp counter_num_signals_comp =
diff --git a/include/linux/counter.h b/include/linux/counter.h
index 22b14a552b1d..0fd99e255a50 100644
--- a/include/linux/counter.h
+++ b/include/linux/counter.h
@@ -297,7 +297,6 @@ struct counter_ops {
* @events: queue of detected Counter events
* @events_wait: wait queue to allow blocking reads of Counter events
* @events_lock: lock to protect Counter events queue read operations
- * @chrdev_lock: lock to limit chrdev to a single open at a time
* @ops_exist_lock: lock to prevent use during removal
*/
struct counter_device {
@@ -325,12 +324,6 @@ struct counter_device {
DECLARE_KFIFO_PTR(events, struct counter_event);
wait_queue_head_t events_wait;
struct mutex events_lock;
- /*
- * chrdev_lock is locked by counter_chrdev_open() and unlocked by
- * counter_chrdev_release(), so a mutex is not possible here because
- * chrdev_lock will invariably be held when returning to user space
- */
- atomic_t chrdev_lock;
struct mutex ops_exist_lock;
};