mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 05:11:48 +00:00
MIPS: Sibyte: Get rid of BKL.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
553d6d5f5b
commit
36ac829e5a
@ -403,36 +403,31 @@ static int sbprof_zbprof_stop(void)
|
||||
static int sbprof_tb_open(struct inode *inode, struct file *filp)
|
||||
{
|
||||
int minor;
|
||||
int err = 0;
|
||||
|
||||
lock_kernel();
|
||||
minor = iminor(inode);
|
||||
if (minor != 0) {
|
||||
err = -ENODEV;
|
||||
goto out;
|
||||
}
|
||||
if (minor != 0)
|
||||
return -ENODEV;
|
||||
|
||||
if (xchg(&sbp.open, SB_OPENING) != SB_CLOSED) {
|
||||
err = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
if (xchg(&sbp.open, SB_OPENING) != SB_CLOSED)
|
||||
return -EBUSY;
|
||||
|
||||
memset(&sbp, 0, sizeof(struct sbprof_tb));
|
||||
sbp.sbprof_tbbuf = vmalloc(MAX_TBSAMPLE_BYTES);
|
||||
if (!sbp.sbprof_tbbuf) {
|
||||
err = -ENOMEM;
|
||||
goto out;
|
||||
sbp.open = SB_CLOSED;
|
||||
wmb();
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
memset(sbp.sbprof_tbbuf, 0, MAX_TBSAMPLE_BYTES);
|
||||
init_waitqueue_head(&sbp.tb_sync);
|
||||
init_waitqueue_head(&sbp.tb_read);
|
||||
mutex_init(&sbp.lock);
|
||||
|
||||
sbp.open = SB_OPEN;
|
||||
wmb();
|
||||
|
||||
out:
|
||||
unlock_kernel();
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sbprof_tb_release(struct inode *inode, struct file *filp)
|
||||
@ -440,7 +435,7 @@ static int sbprof_tb_release(struct inode *inode, struct file *filp)
|
||||
int minor;
|
||||
|
||||
minor = iminor(inode);
|
||||
if (minor != 0 || !sbp.open)
|
||||
if (minor != 0 || sbp.open != SB_CLOSED)
|
||||
return -ENODEV;
|
||||
|
||||
mutex_lock(&sbp.lock);
|
||||
@ -449,7 +444,8 @@ static int sbprof_tb_release(struct inode *inode, struct file *filp)
|
||||
sbprof_zbprof_stop();
|
||||
|
||||
vfree(sbp.sbprof_tbbuf);
|
||||
sbp.open = 0;
|
||||
sbp.open = SB_CLOSED;
|
||||
wmb();
|
||||
|
||||
mutex_unlock(&sbp.lock);
|
||||
|
||||
@ -583,7 +579,8 @@ static int __init sbprof_tb_init(void)
|
||||
}
|
||||
tb_dev = dev;
|
||||
|
||||
sbp.open = 0;
|
||||
sbp.open = SB_CLOSED;
|
||||
wmb();
|
||||
tb_period = zbbus_mhz * 10000LL;
|
||||
pr_info(DEVNAME ": initialized - tb_period = %lld\n",
|
||||
(long long) tb_period);
|
||||
|
Loading…
Reference in New Issue
Block a user