Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4541b5ec authored by Jonathan Corbet's avatar Jonathan Corbet
Browse files

phantom: BKL pushdown



Add explicit lock_kernel calls to phantom_open().

Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent 057e7c7f
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <linux/interrupt.h>
#include <linux/cdev.h>
#include <linux/phantom.h>
#include <linux/smp_lock.h>

#include <asm/atomic.h>
#include <asm/io.h>
@@ -212,13 +213,17 @@ static int phantom_open(struct inode *inode, struct file *file)
	struct phantom_device *dev = container_of(inode->i_cdev,
			struct phantom_device, cdev);

	lock_kernel();
	nonseekable_open(inode, file);

	if (mutex_lock_interruptible(&dev->open_lock))
	if (mutex_lock_interruptible(&dev->open_lock)) {
		unlock_kernel();
		return -ERESTARTSYS;
	}

	if (dev->opened) {
		mutex_unlock(&dev->open_lock);
		unlock_kernel();
		return -EINVAL;
	}

@@ -229,7 +234,7 @@ static int phantom_open(struct inode *inode, struct file *file)
	atomic_set(&dev->counter, 0);
	dev->opened++;
	mutex_unlock(&dev->open_lock);

	unlock_kernel();
	return 0;
}